Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:二分0ms,水过 ,哈哈In Reply To:二分0ms,水过 ,哈哈 Posted by:tiaoer at 2012-08-10 21:12:06 #include<stdio.h> int juzhen[4]; void countou(int *a) { int b[4],i; for(i=0;i<4;i++) { b[i]=a[i]; } a[0]=(b[0]*b[0]+b[1]*b[2])%10000; a[1]=(b[0]*b[1]+b[1]*b[3])%10000; a[2]=(b[2]*b[0]+b[3]*b[2])%10000; a[3]=(b[2]*b[1]+b[3]*b[3])%10000; } void countji(int *a) { int b[4],i; for(i=0;i<4;i++) { b[i]=a[i]; } a[0]=(b[0]*b[0]+b[1]*b[2])%10000; a[1]=(b[0]*b[1]+b[1]*b[3])%10000; a[2]=(b[2]*b[0]+b[3]*b[2])%10000; a[3]=(b[2]*b[1]+b[3]*b[3])%10000; for(i=0;i<4;i++) { b[i]=a[i]; } a[0]=(b[0]+b[1])%10000; a[1]=(b[0])%10000; a[2]=(b[2]+b[3])%10000; a[3]=(b[2])%10000; } int main() { int i,vist[100],number; __int64 n; for(;;) { scanf("%I64d",&n); if(n==0) { printf("0\n"); continue; } if(n==-1) break; juzhen[0]=1; juzhen[1]=1; juzhen[2]=1; juzhen[3]=0; i=0; while(n/2!=0) { // w[i]=n; if(n%2==1) { vist[i]=1; } else { vist[i]=0; } n=n/2; i++; } number=i; /*for(i=0;i<number;i++) { printf("%d ",vist[i]); }*/ //printf("\n"); // printf("--%d\n",number); for(i=number;i>0;i--) { if(vist[i-1]==0) { countou(juzhen); } if(vist[i-1]==1) { countji(juzhen); } } printf("%d\n",juzhen[1]%10000); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator