版权声明:醋姑娘 https://blog.csdn.net/weixin_37023469/article/details/82961086
题目链接
思路
- 开了个100*100的二维数组arr做预处理
- 二重循环,外层是i:1->100,内层j:i->100,arr[i][j]表示从i*(i+1)*;(i+2)*…*j的乘积arr[i][j]表示从i*(i+1)*;(i+2)*…*j的乘积
- 输入n后,再来一个二重循环,外层是连续因子的长度,内层是从2遍历因子
- 题目要求是求最长连续因子的个数,所以外层循环从100开始递减
- 题目要求输出最小的连续因子序列,所以内层是从2递增
结果
- 19/20
- 最后一个测试点没过,数组开大也没过,希望有大佬指出思路或代码问题
代码
- python3实现
arr = [[1]*105 for t in range(105)]
for i in range(1,101):
for j in range(i,101):
arr[i][j] = arr[i][j-1]*j
n = int(input())
flag = False
for i in range(100,-1,-1): #length of factors
if(flag):
break
for j in range(2,100):
if(j+i<=100 and n%arr[j][j+i]==0):
print(i+1)
factors = str(j)
for factor in range(j+1,j+i+1):
factors += "*" + str(factor)
print(factors)
flag = True
break