for num in range(6,58): a = num >> 4 & 3 b = num >> 2 & 3 c = num & 3 if( (a^b) and (b^c) and (c^a) ): print (a+1,b+1,c+1)有点看不懂,谁能给逐句解释下,感激不尽!!!为什么range(6,58),num >> 4 & 3,(a^b) and (b^c) and (c^a),t(a+1,b+1,c+1),有用到什么数学公式呢?
2 回答
已采纳
狂飙的蜗牛_1
TA贡献96条经验 获得超43个赞
可以这样理解:
最小的数是123最大的数是432 二进制里面 : 00 01 10分别可以表示0 1 2 11 10 01分别可以表示3 2 1 合起来看 : 00 01 10是6 11 10 01是57 3的二进制表示是 : 11 如果两个数做异或运算等于0,例如 a^b 等于 0 ,则a和b一定相等; 程序的意思是: 如果两两分割的这3组数,分别代表 百 、 十 、个,那么右移4位与3再加1得到百位,右移2位 与3再加1得到十位,右移0位与3再加1得到个位,其中要剔除重复的(用异或运算剔除);
添加回答
举报
0/150
提交
取消