day17 神奇算式

神奇算式

由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成。

比如:

210 x 6 = 1260 
8 x 473 = 3784
27 x 81 = 2187 

都符合要求。

如果满足乘法交换律的算式算作同一种情况,那么,包含上边已列出的3种情况,一共有多少种满足要求的算式。

请填写该数字,通过浏览器提交答案,不要填写多余内容(例如:列出所有算式)。

count = 0
for i in range(1, 988):
    for j in range(i, 988):             # 避开乘法交换律
        str_i = str(i)
        str_j = str(j)
        if len(str_i)+len(str_j) == 4:  # 等式左边4个数
            set1 = set()
            for k in str_i:
                set1.add(k)
            for k in str_j:
                set1.add(k)
            if len(set1) == 4:          # 等式左边4个数要不同
                num = i*j
                str_num = str(num)
                if len(str_num) == 4:   # 等式右边4个数
                    set2 = set()
                    for k in str_num:
                        set2.add(k)
                    if len(set2) == 4:  # 4个数要不同
                        for t in set2:
                            if t not in set1:
                                break
                        else:
                            count += 1
print(count)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_51174011/article/details/113113030