C++程式:求解斐波那契數列第N項的後兩位數字
在這個問題中,我們給定一個數字N。我們的任務是建立一個C++程式來求解斐波那契數列第N項的後兩位數字。
問題描述
我們需要找到斐波那契數列第N項的最後兩位數字(即最低兩位)。讓我們透過一個例子來理解這個問題:
輸入: N = 120
輸出: 81
解決方案
一個簡單的解決方案是使用直接的斐波那契公式來求解第N項。但是當N很大時,這種方法不可行。為了克服這個問題,我們將使用斐波那契數列的一個性質:後兩位數字每300項重複一次。也就是說,第75項的最後兩位數字與第975項的最後兩位數字相同。
這意味著計算到300項將給我們所有可能的組合,為了找到要使用哪一項,我們將使用該數字對300取模。
示例
#include <iostream> using namespace std; long int fibo(int N){ long int a=0,b=1,c; for(int i=2; i<= N;i++) { c=a+b; a=b; b=c; } return c; } int findLastTwoDigitNterm(int N) { N = N % 300; return ( fibo(N)%100); } int main() { int N = 683; cout<<"The last two digits of "<<N<<"th Fibonacci term are "<<findLastTwoDigitNterm(N); return 0; }
輸出
The last two digits of 683th Fibonacci term are 97
廣告