引言:记一次困难,唯一分解定理+dfs
题目描述
试题 D: 序列求和
本题总分:10 分
【问题描述】
学习了约数后,小明对于约数很好奇,他发现,给定一个正整数 t,总是可以找到含有 t 个约数的整数。小明对于含有 t 个约数的最小数非常感兴趣,并把它定义为St
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
引理
比如说因子数为8
则
8=81 对应数为128 2的7次
8=42 对应数为24 2的3次乘3
8=2*4 对应数为54 2乘3的3次
显然在这个例子中,24是满足条件的最小数
所以先打个素数表,然后用DFS遍历一下就行了
python代码
prime = []
for i in range(2,1000):
ok = 1
for j in range(2,i):
if i % j == 0:
ok = 0
break
if ok:prime.append(i)
if len(prime) == 60:
break
# print(prime)
#存放对应的Si
res = [1]
#求幂
def get(ci, postion):
t = 1
for s in range(ci - 1):
t *= prime[postion]
return t
def dfs(x, now, j):
if x == 1:
return now
t = 0
for i in range(2, 61):
if x % i == 0:
if t == 0:
t = dfs(x // i, now * get(i, j), j + 1)
else:
t = min(t, dfs(x // i, now * get(i, j), j + 1))
return t
for x in range(2,61):
w = dfs(x,1,0)
res.append(w)
# print(len(res))
# print(res)
print(sum(res))
结果
292809912969717649