```
#include <stdio.h>
int f(int n){//斐波那契数列
double a;
(n==1||n==2)?a=1:a=f(n-1)+f(n-2);
return a;
}
int main(){
int n;scanf("%d",&n);
double answer=f(n);
printf("%.2f",answer);
}
```
by Rbu_nas @ 2018-03-17 13:08:36
markdown先
by Rbu_nas @ 2018-03-17 13:09:01
(n==1||n==2)?a=1:a=f(n-1)+f(n-2);
能用?
by SofanHe @ 2018-03-17 13:20:20
可以用的啊
by MRsoymilk @ 2018-03-17 13:51:16
T了或者爆栈了,你需要记忆化@[MRsoymilk](/space/show?uid=83875)
by qqvq @ 2018-03-17 14:24:38
我被卡精度了
by Explorer_CYC @ 2018-03-17 15:30:05
怒交矩阵加速
by Explorer_CYC @ 2018-03-17 15:30:18
```cpp
#include<cstdio>
#include<cstring>
typedef long long ll;
struct mat{
ll s[5][5];
};
mat mult(mat a,mat b)
{
mat res;
memset(res.s,0,sizeof(res.s));
for(int i=0;i<2;i++)
for(int j=0;j<2;j++)
for(int k=0;k<2;k++)
{
res.s[i][j]+=(a.s[i][k]*b.s[k][j]);
}
return res;
}
ll poww(ll k)
{
mat base,res;
memset(res.s,0,sizeof(res.s));
for(int i=0;i<2;i++)
res.s[i][i]=1;
base.s[0][0]=1,base.s[0][1]=1,base.s[1][0]=1,base.s[1][1]=0;
while(k)
{
if(k&1) res=mult(base,res);
base=mult(base,base);
k>>=1;
}
return res.s[0][1];
}
int main()
{
ll k;
scanf("%lld",&k);
printf("%.2lf",(double)poww(k));
return 0;
}
```
by Explorer_CYC @ 2018-03-17 15:33:43
@[Ycrpro](/space/show?uid=29089) 谢谢你
by MRsoymilk @ 2018-03-17 16:01:01
希望更丰富地展现?使用Markdown
by Xhesika_Frost @ 2019-01-31 11:03:00