没通过为什么?

P1720 月落乌啼算钱(斐波那契数列)

``` #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


|