poj 3070
題面
大意就是求斐波那契數列第n項,做法為矩陣快速冪。
代碼
#include<iostream> #include<cstdio> #include<cstring> #define LL long longusing namespace std; const int mod = 10000; struct Mat{LL a[4][4];Mat(){memset(a,0,sizeof(a));}Mat operator*(const Mat &h){Mat c;for(register int i=1;i<=2;i++)for(register int j=1;j<=2;j++)for(register int k=1;k<=2;k++){c.a[i][j]+=a[i][k]%mod*h.a[k][j]%mod;c.a[i][j]%=mod;}return c;} }ans,f;int n;inline void fast_pow(Mat b,int k){for(;k;k>>=1){if(k&1) f=f*b;b=b*b;} }int main(){while(~scanf("%d",&n)){if(n==-1) break;f.a[1][1]=0;f.a[1][2]=1;ans.a[2][1]=ans.a[1][2]=ans.a[2][2]=1;ans.a[1][1]=0;fast_pow(ans,n);printf("%lld\n",f.a[1][1]);}return 0; }轉載于:https://www.cnblogs.com/sdfzsyq/p/9677007.html
總結
- 上一篇: android 圆形头像,自定义圆形Im
- 下一篇: 按word内容关键字搜索