http://poj.org/problem?id=3070 登录后复制 #include <iostream> #include <string.h> #include <stdlib.h> #include <cstdio> #include <algorithm> #define mod 10000 using namespace std; struct m { int a[3][3]; } init,res; int n; m Mult(m x,m y) { m tmp; for(int i=0; i<2; i++) { for(int j=0; j<2; j++) { tmp.a[i][j]=0; for(int k=0; k<2; k++) { tmp.a[i][j]=(tmp.a[i][j]+x.a[i][k]*y.a[k][j])%mod; } } } return tmp; } m Pow(m x,int n) { m tmp; for(int i=0; i<2; i++)//将矩阵tmp初始化成单位矩阵[1,0] { for(int j=0; j<2; j++)// [0,1] { tmp.a[i][j]=(i==j); } } while(n) { if(n&1) tmp=Mult(tmp,x); n>>=1; x=Mult(x,x); } return tmp; } int main() { while(scanf("%d",&n)!=EOF) { if(n==-1) break; init.a[0][0]=1; init.a[0][1]=1; init.a[1][0]=1; init.a[1][1]=0; res=Pow(init,n); cout<<res.a[1][0]<<endl; } return 0; } 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60. 原创作者: u_15481067 转载于: https://blog.51cto.com/u_15481067/11758032