标签:des style blog http color io os java ar
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2796 Accepted Submission(s): 1282
1 //#define LOCAL 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 //matrix --> ¾ØÕó 6 int mat[4][4]; 7 int ans[4][4]; 8 int len,m; 9 10 void init() 11 { 12 int cc[4][4]={ 13 {1,0,1,1},{1,0,0,0}, 14 {0,1,0,0},{0,0,1,0}}; 15 16 for(int i=0;i<4;i++) 17 { 18 for(int j=0;j<4;j++) 19 { 20 mat[i][j]=cc[i][j]; 21 if(i==j) ans[i][j]=1; 22 else ans[i][j]=0; 23 } 24 } 25 } 26 void Matrix(int a[][4],int b[][4]) //¾ØÕóÏà³Ë 27 { 28 int i,j,k; 29 int c[4][4]={0}; 30 for(j=0;j<4;j++){ 31 for(i=0;i<4;i++){ 32 for(k=0;k<4;k++){ 33 c[j][i]=(c[j][i]+a[j][k]*b[k][i])%m; 34 } 35 } 36 } 37 38 for(j=0;j<4;j++) 39 for(i=0;i<4;i++) 40 a[j][i]=c[j][i]; 41 42 } 43 44 void pow(int n) 45 { 46 while(n>0) 47 { 48 if(n&1) Matrix(ans,mat); 49 n>>=1; 50 if(n==0) break; 51 Matrix(mat,mat); 52 } 53 } 54 int main() 55 { 56 #ifdef LOCAL 57 freopen("test.in","r",stdin); 58 #endif 59 int f[4]={2,4,6,9}; 60 while(scanf("%d%d",&len,&m)!=EOF) 61 { 62 if(len==0)printf("%d\n",0); 63 else if(len<=4)printf("%d\n",f[len-1]%m); 64 else{ 65 init(); 66 pow(len-4); 67 printf("%d\n",(ans[0][0]*f[3]+ans[0][1]*f[2]+ans[0][2]*f[1]+ans[0][3]*f[0])%m); 68 } 69 } 70 return 0; 71 }
标签:des style blog http color io os java ar
原文地址:http://www.cnblogs.com/gongxijun/p/3985221.html