团体程序设计天梯赛-练习集L1-006连续因子

版权声明:醋姑娘 https://blog.csdn.net/weixin_37023469/article/details/82961086

题目链接

L1-006 连续因子

思路

  1. 开了个100*100的二维数组arr做预处理
  2. 二重循环,外层是i:1->100,内层j:i->100,arr[i][j]表示从i*(i+1)*;(i+2)*…*j的乘积arr[i][j]表示从i*(i+1)*;(i+2)*…*j的乘积
  3. 输入n后,再来一个二重循环,外层是连续因子的长度,内层是从2遍历因子
  4. 题目要求是求最长连续因子的个数,所以外层循环从100开始递减
  5. 题目要求输出最小的连续因子序列,所以内层是从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

猜你喜欢

转载自blog.csdn.net/weixin_37023469/article/details/82961086