level 3
方程 a*b = (a or b) * (a and b),在 a,b 都取 [0, 31] 中的整数时,共有_____组解。(*表示乘法;or 表示按位或运算;and 表示按位与运算)
答案是454,请问大神如何理解此题,另外有没有详细点的解题步骤啊???
不胜感谢!!
2019年06月23日 02点06分
1
level 15
0~31就是5位二进制数
然后,满足这个等式的a,b两数满足如下关系:一个数中是1的位,在另一个数中也都是1
举例:3和7,分别是00011和00111,3的两位1在7中也是1;3和5,分别是00011和00101,就不满足这个关系
然后,我们只要根据其中一个数中1的位数进行分类,用组合数求出每一类的个数,然后乘以每一类对应的满足关系的数字个数,就可以得到结果
比如:有1位1的数,有C(5,1)=5个,对应的满足关系的数有两种情况:这一位是1,另外4位任意,有2^4=16个;另外4位是0,这一位任意,有2^1=2个;再减去重复计算的两数相等的1种情况;最终得到这类数字对应的满足等式的数字对有C(5,1)*(16+2-1)=85个
以下是完整的计算式:
C(5,0)*(32+1-1)+C(5,1)*(16+2-1)+C(5,2)*(8+4-1)+C(5,3)*(4+8-1)+C(5,4)*(2+16-1)+C(5,5)*(1+32-1)
2019年06月23日 12点06分
5
真的非常感谢,恍然大悟!
![[真棒]](/static/emoticons/u771fu68d2.png)
!
2019年06月24日 01点06分
帮助很大。非常感谢!
2019年09月08日 03点09分