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

更新於:2020年10月9日

521 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告