链接:点击打开链接
题意:求fibonacci的前四位数
代码:
#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;
long long num[50]={0,1};
int main()
{
double a=(sqrt(5)+1)/2,temp;
long long n,i;
for(i=2;i<=20;i++)
num[i]=num[i-1]+num[i-2]; //将前二十项打出来直接输出
while(cin>>n){
if(n<=20){
cout<<num[n]<<endl;
continue;
}
temp=-0.5*log10(5)+n*log10(a);//用到fibonacci的公式和对数性质
temp-=floor(temp);
temp=pow(10,temp); //求出将fibonacci化为指数形式时
while(temp<1000) //的小数部分大小
temp*=10; //不够1000的乘十
printf("%d\n",(long long)temp);
}
return 0;
}
Fibonacci公式:
求小数部分公式: