PAT乙级1079-----延迟的回文数 (20分)
1079 延迟的回文数 (20分)

输入样例 1:
97152
输出样例 1:
97152 + 25179 = 122331
122331 + 133221 = 255552
255552 is a palindromic number.
输入样例 2:
196
输出样例 2:
196 + 691 = 887 887 + 788 = 1675 1675 + 5761 = 7436 7436 + 6347 = 13783 13783 + 38731 = 52514 52514 + 41525 = 94039 94039 + 93049 = 187088 187088 + 880781 = 1067869 1067869 + 9687601 = 10755470 10755470 + 07455701 = 18211171 Not found in 10 iterations.
思路:
1.用字符串输入,倒置并进行加法计算,要注意倒置后的加数若最高位为0如实输出即可
2.测试点234不通过是因为要对初始输入进行判断,若初始输入为回文数,则直接输出,不用加
首次通过代码:
1 #include<stdio.h> 2 #include<string.h> 3 4 int judge(char a[],int num){ 5 for(int i=0;i<num/2;i++){ 6 if(a[i]!=a[num-1-i]) { 7 return 0; 8 } 9 } 10 printf("%s is a palindromic number.",a); 11 return 1; 12 } 13 14 int main(){ 15 char a[1001]; 16 char b[1001]; 17 scanf("%s",a); 18 int len=strlen(a); 19 if(judge(a,len)) return 0; 20 for(int i=0;i<10;i++){ 21 for(int j=0;j<len;j++){ 22 b[len-1-j]=a[j]; 23 } 24 b[len]='\0'; 25 char c[1001];int num=0; 26 int x,y=0; 27 for(int j=len-1;j>=0;j--){ 28 x=a[j]+b[j]+y-'0'-'0'; 29 y=x/10; 30 x=x%10; 31 c[num++]=x+'0'; 32 } 33 if(y==1) c[num++]='1'; 34 c[num]='\0'; 35 printf("%s + %s = ",a,b); 36 int flag=1; 37 for(int j=num-1;j>=0;j--) printf("%c",c[j]); 38 printf("\n"); 39 40 if(judge(c,num)) { 41 return 0; 42 } 43 int z=0; 44 for(int j=num-1;j>=0;j--) a[z++]=c[j]; 45 a[z]='\0'; 46 len=z; 47 } 48 printf("Not found in 10 iterations."); 49 return 0; 50 }
参考:

浙公网安备 33010602011771号