今天一个朋友给我发了一道魔都某NBlity小学一年级的题目让我帮看看,题目的内容是一个三位数乘以一个一位数等于一个四位数,将1~8这8个数字不重复得填入上述三个数使得该等式成立。懒得费脑推了直接用程序暴力破解,使用方法如下。
一. 函数
python内置函数-排列组合函数
product 笛卡尔积 (有放回抽样排列)
permutations 排列 (不放回抽样排列)
combinations 组合,没有重复 (不放回抽样组合)
combinations_with_replacement 组合,有重复 (有放回抽样组合)
详细的参见官网。
二. 程序
- import itertools
-
-
- glist = itertools.permutations('12345678', 8)
- for i in glist:
- x1 = int(i[0]) * 100 + int(i[1]) * 10 + int(i[2])
- x2 = int(i[3])
- y = int(i[4]) * 1000 + int(i[5]) * 100 + int(i[6]) * 10 + int(i[7])
-
- if x1 * x2 == y:
- print(i)