Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。

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

#include
#define M 10007
int main()
{
	int a1,a2;
	a1=a2=1;
	int sum=0,temp;//sum是保存余数的变量 ,temp是为了方便交换数据 
	long n;//因为n>=1 and n<=1000000 
	long i;
	scanf("%ld",&n);
	
	for(i=1;i<=n;i++)
	{
		sum=a1%M;
		temp=a2;
		a2=(a1+a2)%M;
		a1=temp; 
	}
	printf("%d\n",sum);
	return 0;
} 

以下程序是求输入一个整数n,求出Fibonacci数列的第n项的值

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

int main()
{
	int n=0;

	scanf("%d",&n);
	
	printf("%d\n",Fibo(n));
	
	return 0;
}


你可能感兴趣的:(C语言程序设计题)