问题描述

Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。

当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。

输入格式

输入包含一个整数n。

输出格式

输出一行,包含一个整数,表示Fn除以10007的余数。

说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。

样例输入

10

样例输出

55

样例输入

22

样例输出

7704

数据规模与约定

1 <= n <= 1,000,000。

法1:

#include <iostream>
using namespace std;

int FB(int n)
{
	if(n==2||n==1)return 1;
	else return FB(n-1)+FB(n-2);
}

int main()
{
	while(1)
	{
		int n;
		cin>>n;
		cout<<FB(n)%10007<<endl;
	} 
}

法2:

#include <iostream>

using namespace std;
 
int main()
{
    int index;
    while(cin>>index)
    {
    	if(1<=index&&index<=2)
    		cout<<1;
    	else
    	{
    		long long m=1,n=1;
	    	long long temp;
	    	int i=3;
	    	while(i<=index)
	    	{
	    		temp=(m+n)%10007;
	    		cout<<temp<<" "<<m<<" "<<n<<endl;
	    		m=n;//向右平移 
	    		n=temp;//向右平移 
	    		i++;
			}
			cout<<temp<<endl;
		}
	}
    return 0;
}

 

posted on 2020-01-29 18:55  海月CSDN  阅读(100)  评论(0编辑  收藏  举报