不是VIP会员,不能显示答案

题目解答

题目:
方程 a*b = (a or b) * (a and b),在 a,b 都取 [0, 31] 中的整数时,共有_____组解。(*表示乘法;or 表示按位或运算;and 表示按位与运算)
答案:454
考点: 0
分析:
解答: 介绍一个结论:a and b≤min(a,b)≤max(a,b)≤a or b < 2 max(a,b)

最后一个小于号可能不太理解,因为乘以一个2一定要进位,a or b一定是不会进位的。前面的不等号很好理解

那么对答案的贡献形式一定是{a and b=min(a,b)  a or b=max(a,b)。那么最小值的二进制一定是最大值的二进制的子集。枚举所有二进制可能的位数,由于要删去a=b的重复情况,那么答案为2×( ∑(i=0,5)Ci5×2^i)-32=454
评论:
老师: 0