1. 程式人生 > 其它 >藍橋杯 試題 入門訓練 Fibonacci數列

藍橋杯 試題 入門訓練 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。
解題思路
因為本體題目直接給出公式,帶入即可
正確程式碼

#include <iostream>
using namespace std;
int main() {
	//自己在測驗時,陣列大小可以開小點,但是最後提交時可以開成跟題目給的資料一樣大
	//做題時注意邊界問題,以及看題目給出的範圍邊界度應該測驗一下
	int a[1000000];
	a[0]=1;
	a[1]=1;
	int n;
	scanf("%d",&n);
	for(int i=2;i<n;i++){
		a[i]
=(a[i-1]+a[i-2])%10007; } printf("%d",a[n-1]); return 0; }

PS:本人剛開始寫部落格,僅為個人學習使用,解題思路或許不清晰,因為本人技術有限,如果程式碼出現錯誤或者各位大佬有更好的解題思路,歡迎大家指出,謝謝!!!