C++程式:查詢第n個斐波那契數的最後一位數字
在這個問題中,我們給定一個數字N。我們的任務是建立一個C++程式來查詢第N個斐波那契數的最後一位數字。
問題描述
我們需要找到第N個斐波那契數的最後一位數字(即最低有效位)。
讓我們舉個例子來理解這個問題,
輸入:N = 120 輸出:1
解決方案
一個簡單的解決方案是使用直接的斐波那契公式來查詢第N項。但是當N是一個大數時,這種方法不可行。為了克服這個問題,我們將使用斐波那契數列的一個性質,即最後一位數字在60項之後重複。即第75項的最後一位數字與第135項的最後一位數字相同。
這意味著計算到60項將為我們提供所有可能的組合,並且為了找到使用哪一項,我們將找到該數字模60的結果。
示例
#include 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 findLastDigitNterm(int N) { N = N % 60; return ( fibo(N)%10); } int main() { int N = 683; cout<<"The last digit of "<<N<<"th Fibonacci term is "<<findLastDigitNterm(N); return 0; }
輸出
The last digit of 683th Fibonacci term is 1
廣告