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 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告