2022年 11月 16日

使用Python实现排列组合

    今天一个朋友给我发了一道魔都某NBlity小学一年级的题目让我帮看看,题目的内容是一个三位数乘以一个一位数等于一个四位数,将1~8这8个数字不重复得填入上述三个数使得该等式成立。懒得费脑推了直接用程序暴力破解,使用方法如下。

一. 函数

python内置函数-排列组合函数

product 笛卡尔积 (有放回抽样排列)

permutations 排列 (不放回抽样排列)

combinations 组合,没有重复 (不放回抽样组合)

combinations_with_replacement 组合,有重复 (有放回抽样组合)

详细的参见官网。

二. 程序

  1. import itertools
  2. glist = itertools.permutations('12345678', 8)
  3. for i in glist:
  4. x1 = int(i[0]) * 100 + int(i[1]) * 10 + int(i[2])
  5. x2 = int(i[3])
  6. y = int(i[4]) * 1000 + int(i[5]) * 100 + int(i[6]) * 10 + int(i[7])
  7. if x1 * x2 == y:
  8. print(i)