#include<stdio.h> #define M 10007 int main()
{
int a1,a2;
a1=a2=1;
int temp; //temp作为数据交换的中介 long n; //因为n>=1 and n<=1000000 long i;
scanf("%ld",&n);
for(i=1;i<n;i++)
{
//a1 作为f(n);a2为f(n+1) //a1+a2=f(n+2)
temp=a2;
a2=(a1+a2)%M;
a1=temp;
}
printf("%d\n",a1);
return0;
}
2. 求第n个数 - 时间复杂度O(n)算法
#include<stdio.h> int main()
{
int a1,a2;
a1=a2=1;
int temp; //temp作为数据交换的中介 long n; //因为n>=1 and n<=1000000 long i;
scanf("%ld",&n);
for(i=1;i<n;i++)
{
//a1 作为f(n);a2为f(n+1) //a1+a2=f(n+2)
temp=a2;
a2=a1+a2;
a1=temp;
}
printf("%d\n",a1);
return0;
}
3. 求第n个数 - 时间复杂度O(nlogn)算法
#include<stdio.h> int Fibo(int n)
{
if(n==1||n==2)
return1;
elsereturn Fibo(n-1)+Fibo(n-2);
}
int main()
{
int n=0;
scanf("%d",&n);
printf("%d\n",Fibo(n));
return0;
}