1. 程式人生 > >團體程式設計天梯賽-練習集L1-006連續因子

團體程式設計天梯賽-練習集L1-006連續因子

題目連結

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