Python算数问题ABCD-CDC=ABC

Python
ABCD-CDC=ABC,求A,B,C,D值(A,B,C,D为非负整数)

无非就是循环

for a in range(10):
  for b in range(10):
    for c in range(10):
       for d in range(10):
          if a*1000+b*100+c*10+d-c*100-d*10-c==a*100+b*10+c:
             print (a,b,c,d)

输出
0 0 0 0
1 0 9 8
也就是
1098-989=109

循环枚举可能的 A、B、C、D 值,范围为 0~9

for a in range(10):
    for b in range(10):
        for c in range(10):
            for d in range(10):
                abcd = str(a) + str(b) + str(c) + str(d)
                cdc = str(c) + str(d) + str(c)
                if int(abcd) - int(cdc) == int(str(a) + str(b) + str(c)):
                    print("A=", a, "B=", b, "C=", c, "D=", d)
                    exit()

A=1,B=0,C=9,D=8。

根据题面,a 应该不能为0,考虑到两个三位数相加,不可能得到2000以上的结果,所以循环范围限定到1000至1999

考虑到 cdc+abc = abcd,则d一定为偶数,所以循环步长设置为2


for i in range(1000,2000,2):
    a = i // 1000
    b = i // 100 % 10
    c = i // 10 % 10
    d = i % 10
    if i - c * 100 - d * 10 - c == i // 10:
        print('{} - {} = {}'.format(i,c * 100 + d * 10 + c,i//10))