Sloppy Python implementation

Article Directory

1. Problem

小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。

有一次,老师出的题目是:36 x 495 = ?

他却给抄成了:396 x 45 = ?

但结果却很戏剧性,他的答案竟然是对的!!

因为 36 * 495 = 396 * 45 = 17820

类似这样的巧合情况可能还有很多,比如:27 * 594 = 297 * 54

假设 a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,且不含0

能满足形如: ab * cde = adb * ce 这样的算式一共有多少种呢?

2. Ideas and code

Idea: Violence is over

result = 0
for a in range(1,10):
    for b in range (1,10):
        if a==b:
            continue
        for c in range (1,10):
            if c == a or c == b :
                continue
            for d in range (1,10):
                if d == a or d == b or d == c:
                    continue
                for e in range (1,10):
                    if e == a or e == b or e == c or e == d :
                        continue
                    if (a*10+b)*(c*100+d*10+e) == (c*10+e)*(a*100+d*10+b):
                        result += 1

print(result)


                        
                        

Idea: This question can be enumerated violently, and then you can use the set to determine whether it is five different numbers, then exclude the numbers containing 0, and finally use the slicing and splicing of the string to adjust.

def solve():
    num = 0
    for i in range(10000, 100000):
        a = str(i)
        if a.count('0') == 0:
            if len(set(a)) == 5:
                b = int(a[0]+a[1]) * int(a[2]+a[3]+a[4])
                c = int(a[0]+a[3]+a[1]) * int(a[2]+a[4])
                if b == c:
                    num += 1
    return num


print(solve())

Guess you like

Origin blog.csdn.net/qq_49821869/article/details/114417744