NOIP2018年初賽試題問題求解2解析

題面:
方程 a*b = (a or b) X(a and b),在 a,b 都取 [0, 31] 中的整數時,共有_____組解。(X表示乘法;or 表示按位或運算;and 表示按位與運算)
解析(思路來自網絡):
  0~31就是5位二進制數,滿足這個等式的a,b兩數滿足如下關係:一個數中是1的位,在另一個數中也都是1.
  舉例:3和7,分別是00011和00111,3的兩位1在7中也是1,3 or 7 = 7 ,3 and 7 = 3,滿足題目關係式;但是如3和5,分別是00011和00101,就不滿足這個關係。
  因此,我們只要根據其中一個數中1的位數進行分類,用組合數求出每一類的個數,然後乘以每一類對應的滿足關係的數字個數,就可以得到結果.
  比如:有1位1的數,有C(5,1)=5個,對應的滿足關係的數有兩種情況:這一位是1,另外4位任意,有24=16個;另外4位是0,這一位任意,有21=2個;再減去重複計算的兩數相等的1種情況;最終得到這類數字對應的滿足等式的數字對有:C(5,1)X(16+2-1)=85個
  以下是完整的計算式:
C(5,0)X(32+1-1)+C(5,1)X(16+2-1)+C(5,2)X(8+4-1)+C(5,3)X(4+8-1)+C(5,4)X(2+16-1)+C(5,5)X(1+32-1)=454

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章