题目
观察如下的算式:
9213 x 85674 = 789314562
左边的乘数和被乘数正好用到了1~9的所有数字,每个1次。
而乘积恰好也是用到了1~9的所有数字,并且每个1次。
请你借助计算机的强大计算能力,找出满足如上要求的9数算式一共有多少个?
注意:
- 总数目包含题目给出的那个示例。
- 乘数和被乘数交换后作为同一方案来看待。
解题思路
- 对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