PAT 1024 Palindromic Number
http://pat.zju.edu.cn/contests/pat-practise/1024
简单大数
1 #include <stdio.h> 2 #include <string.h> 3 char ori_str[100],trans_str[100]; 4 char temp[100]; 5 int K; 6 7 void trans(char *str) 8 { 9 int i=strlen(str); 10 11 int j; 12 for(j=0;j<i;j++) { 13 trans_str[j]=ori_str[i-1-j]; 14 } 15 trans_str[i]='\0'; 16 } 17 18 bool check(char *str) 19 { 20 char t[100]; 21 int i=strlen(str); 22 int j=0; 23 for(j=0;j<i;j++) { 24 t[j]=str[i-1-j]; 25 } 26 t[i]='\0'; 27 28 return strcmp(str,t)==0; 29 } 30 31 32 void calc(char *str1,char *str2) 33 { 34 int i=strlen(str1); 35 36 int j; 37 int c=0; 38 for(j=0;j<i;j++) { 39 int m=str1[j]-'0'+str2[j]-'0'+c; 40 temp[j]=(m%10)+'0'; 41 c=m/10; 42 } 43 if(c) { 44 temp[j]=c+'0'; 45 } 46 temp[j+1]='\0'; 47 } 48 int main() 49 { 50 scanf("%s%d",ori_str,&K); 51 52 if(check(ori_str)) { 53 54 printf("%s\n",ori_str); 55 printf("0\n"); 56 return 0; 57 58 } 59 60 int i; 61 for(i=1;i<=K;i++) { 62 63 trans(ori_str); 64 calc(ori_str,trans_str); 65 66 if(check(temp)) { 67 printf("%s\n",temp); 68 printf("%d\n",i); 69 break; 70 } else if (i==K) { 71 // printf("%s\n",temp); 72 int j; 73 for(j=strlen(temp)-1;j>=0;j--) { 74 putchar(temp[j]); 75 } 76 putchar('\n'); 77 printf("%d\n",i); 78 } 79 strcpy(ori_str,temp); 80 } 81 return 0; 82 }