1 2 3 4

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 }
View Code

参考:

FROM:https://www.icode9.com/content-4-345522.html

posted @ 2020-03-04 14:25  Qianren  阅读(266)  评论(0)    收藏  举报