蓝桥杯:9数算式————Python

题目
观察如下的算式:

9213 x 85674 = 789314562

左边的乘数和被乘数正好用到了1~9的所有数字,每个1次。

而乘积恰好也是用到了1~9的所有数字,并且每个1次。

请你借助计算机的强大计算能力,找出满足如上要求的9数算式一共有多少个?

注意:

  1. 总数目包含题目给出的那个示例。
  2. 乘数和被乘数交换后作为同一方案来看待。

解题思路

  • 对1-9进行全排列。
  • 排列后通过把数字转为列表进行切片的方式来放置乘号,然后判断乘积。
  • 判断乘积的具体方法:通过集合判断是否是9位数字,然后再判断0是否在乘积中。

Code

#9数算式
import itertools
a = [1,2,3,4,5,6,7,8,9]
res = 0
sum = 0

for i in itertools.permutations(a,9):
    w = list(i)
    for j in range(1,5):
        sum = int(''.join(str(i) for i in w[0:j])) * int(''.join(str(i) for i in w[j:9]))
        a = set(map(int,str(sum)))
        if len(a) == 9 and 0 not in a:
            res += 1

print(res)

Answer

  • 1625

猜你喜欢

转载自blog.csdn.net/Kinght_123/article/details/113932623