用python解数的分解,我没有太好的方法python的循环效率很低导致一道简单的题需要大量的时间,本人用暴力法成功解题,耗费了大量的时间,这里放上代码
from tqdm import tqdm
list1 = []
count = 0
status = 0
for i in tqdm(range(1, 2020)):
for i1 in str(i):
if i1 == '2' or i1 == '4':
status = 1
break
if status == 0:
for j in range(1, 2020):
for j1 in str(j):
if j1 == '2' or j1 == '4':
status = 1
break
if status == 0:
for z in range(1, 2020):
for z1 in str(z):
if z1 == '2' or z1 == '4':
status = 1
break
if status == 0 and i + j + z == 2019 and {i, j, z} not in list1 and i != j and i != z and j != z:
list1.append({i, j, z})
count = count + 1
status = 0
status = 0
status = 0
print(count)
# 40785
这里的tqdm是一个进度条的外部库,对解题没有任何帮助,只是起到协助解题的作用(方便看计算进度),具体的思路很简单,生成三个在1到2019的数如果加起来等于2019就用一个集合记录下来(方便查重),又因为三个数不相等且都不含有2,4,故还需判断数的内容。暴力法有很多重复的运算,实际计算下来消耗时间18分钟,太慢了!