Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少(蓝桥基础实战)
# 使用递归的方式:(此方法比较耗时)
#include<stdio.h>
#include<math.h>
#define M 10007
long Fib(long n)
{
if(n==1||n==2)
return 1;
else
return (Fib(n-1)+Fib(n-2));
}
int main()
{
long n;
scanf("%ld",&n);
printf("%ld",(Fib(n))%M);
return 0;
}
第二种就是使用循环的方式
#include<stdio.h>
#define M 10007
int main()
{
int a1,a2;
a1=a2=1;
int sum=0,temp;//sum是保存余数的变量 ,temp是为了方便交换数据
long n;//因为n>=1 and n<=1000000
scanf("%ld",&n);
for(long i=1;i<=n;i++)
{
sum=a1%M;
temp=a2;
a2=(a1+a2)%M;
a1=temp;
}
printf("%d\n",sum);
return 0;
}
temp算是一个容器来使a1,a2变换;