有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

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),有用到什么数学公式呢?

慕x3201745
浏览 2328回答 2
2回答

狂飙的蜗牛_1

可以这样理解:最小的数是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得到个位,其中要剔除重复的(用异或运算剔除);

pardon110

位运算
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python