團體程式設計天梯賽-練習集L1-006連續因子
阿新 • • 發佈:2018-12-31
題目連結
思路
- 開了個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