Fibonacci数列の繰返しC言語の詳細:Fn=Fn-1+Fn-2
3375 ワード
Fibonacci数列の繰返しC言語の詳細:Fn=Fn-1+Fn-2
1.Fnを10007で割った剰余を求める
2.n番目の数-時間複雑度O(n)アルゴリズムを求める
3.n番目の数-時間複雑度O(nlogn)アルゴリズムを求める
1.Fnを10007で割った剰余を求める
#include
#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//a1 f(n);a2 f(n+1)
//a1+a2=f(n+2)
temp=a2;
a2=(a1+a2)%M;
a1=temp;
}
printf("%d
",a1);
return 0;
}
2.n番目の数-時間複雑度O(n)アルゴリズムを求める
#include
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//a1 f(n);a2 f(n+1)
//a1+a2=f(n+2)
temp=a2;
a2=a1+a2;
a1=temp;
}
printf("%d
",a1);
return 0;
}
3.n番目の数-時間複雑度O(nlogn)アルゴリズムを求める
#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
",Fibo(n));
return 0;
}