Lib.nbdp.net
首页
试卷列表
OJ题库
搜索
登录
主页
题库
详解
不是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