1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #define BIN 2 5 #define OCT 8 6 #define DEC 10 7 #define HEX 16 8 long long a[2500002]; 9 void pb(long long num){ 10 unsigned long long i; 11 char ready=0; 12 for(i=(unsigned long long)1<<62 ; i>0 ; i>>=1){ 13 if(num & i){ 14 ready=1; 15 } 16 if(ready){ 17 if(num & i){ 18 putchar('1'); 19 }else{ 20 putchar('0'); 21 } 22 } 23 } 24 putchar('\n'); 25 } 26 int main(){ 27 int i; 28 int p,q,r,s,n; 29 char tmp1[20],*tmp2; 30 while(1){ 31 for(i=1;i<=7;i++){ 32 if(scanf("%s",tmp1)==EOF){ 33 return 0; 34 } 35 strtok(tmp1,"="); 36 tmp2=strtok(NULL,"="); 37 switch(tmp1[0]){ 38 case 'p': p=atoi(tmp2); break; 39 case 'q': q=atoi(tmp2); break; 40 case 'r': r=atoi(tmp2); break; 41 case 'n': n=atoi(tmp2); break; 42 case 'a': sscanf(tmp2,"%I64d",&a[tmp1[1]-'0']); break; 43 case 's': 44 switch(tmp2[0]){ 45 case 'b': s=BIN; break; 46 case 'o': s=OCT; break; 47 case 'd': s=DEC; break; 48 case 'h': s=HEX; break; 49 } 50 break; 51 } 52 } 53 for(i=3;i<=n;i++){ 54 a[i]=p*a[i-1]+q*a[i-2]+r; 55 a[i]%=8247596325LL; 56 } 57 switch(a[n]){ 58 case 7: puts("This is a bad number."); continue; 59 case 8: puts("This is a transitive verb."); continue; 60 case 9: puts("This number has been deleted."); continue; 61 } 62 switch(s){ 63 case BIN: pb(a[n]); break; 64 case DEC: printf("%I64d\n",a[n]); break; 65 case OCT: printf("%I64o\n",a[n]); break; 66 case HEX: printf("%I64X\n",a[n]); break; 67 } 68 } 69 return 0; 70 }