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
广告