------------恢復內容開始------------
因為在藍橋杯python組只可以使用python3.8.6自帶idle編輯器,所以以下題目運行均用自帶編譯器運行
1.1 Fibonacci數列題
時間限制:1.0s 內存限制:256.0MB
問題描述
Fibonacci數列的遞推公式為:Fn=Fn-1+Fn-2,其中F1=F2=1。
當n比較大時,Fn也非常大,現在我們想知道,Fn除以10007的余數是多少。
輸入格式
輸入包含一個整數n。
輸出格式
輸出一行,包含一個整數,表示Fn除以10007的余數。
說明:在本題中,答案是要求Fn除以10007的余數,因此我們只要能算出這個余數即可
,而不需要先計算出Fn的准確值,再將計算的結果除以10007取余數,直接計算余數往往
比先算出原數再取余簡單。
樣例輸入
10
樣例輸出
55
樣例輸入
22
樣例輸出
7704
數據規模與約定
1 <= n <= 1,000,000。
1 def fib_num(n): 2 F1=1 3 F2=1 4 F3=0 5 if n>=3: 6 for i in range(3,n+1): 7 F3=F1+F2 8 F1=F2 9 if F3>10007: 10 F3=F3%10007 11 F2=F3 12 print(F3%10007) 13 else: 14 print(1) 15 fib_num(int(input()))
題解:在這里我將代碼封裝,雖然內存相比於之前大了些許,但是在藍橋杯的測試系統中運行速度卻快了一倍
另外一種討巧的寫法,代碼長度相比較之前短了不少,速度也更加快(存疑hh)
利用列表的方式進行書寫
1 x = int(input()) 2 F=[1,1] 3 4 for i in range(3,x+1): 5 F.append((F[-1]+F[-2])%10007) 6 7 print(F[x-1])