Palindromic Number (还是大数)

A number that will be the same when it is written forwards or backwards is known as a Palindromic Number. For example, 1234321 is a palindromic number. All single digit numbers are palindromic numbers.

Non-palindromic numbers can be paired with palindromic ones via a series of operations. First, the non-palindromic number is reversed and the result is added to the original number. If the result is not a palindromic number, this is repeated until it gives a palindromic number. For example, if we start from 67, we can obtain a palindromic number in 2 steps: 67 + 76 = 143, and 143 + 341 = 484.

Given any positive integer N, you are supposed to find its paired palindromic number and the number of steps taken to find it.

Input Specification:

Each input file contains one test case. Each case consists of two positive numbers N and K, where N (<= 1010) is the initial numer and K (<= 100) is the maximum number of steps. The numbers are separated by a space.

Output Specification:

For each test case, output two numbers, one in each line. The first number is the paired palindromic number of N, and the second number is the number of steps taken to find the palindromic number. If the palindromic number is not found after K steps, just output the number obtained at the Kth step and K instead.

Sample Input 1:

67 3

Sample Output 1:

484

2

Sample Input 2:

69 3

Sample Output 2:

1353

3

  1 #include <iostream>
  2
  3 #include <string>
  4
  5 #include <algorithm>
  6
  7 using namespace std;
  8
  9
 10
 11 int aa1[50];
 12
 13 int aa2[50];
 14
 15
 16
 17 int main()
 18
 19 {
 20
 21
 22
 23       string  n;int k;
 24
 25     while(cin>>n)
 26
 27       {
 28
 29             cin>>k;
 30
 31           int i,j,t;
 32
 33
 34
 35        bool ifid=true;
 36
 37
 38
 39          for(i=0,j=n.length()-1;i<=j;i++,j--)
 40
 41          {
 42
 43              if(n[i]!=n[j])
 44
 45                {
 46
 47                  ifid=false;
 48
 49                   break;
 50
 51                }
 52
 53          }
 54
 55
 56
 57          if(ifid)
 58
 59          {
 60
 61             cout<<n<<endl;
 62
 63               cout<<0<<endl;
 64
 65          }
 66
 67          else
 68
 69          {
 70
 71                 for(i=0;i<50;i++)
 72
 73                   {
 74
 75                     aa1[i]=0;
 76
 77                        aa2[i]=0;
 78
 79                   }
 80
 81                 int count=0;
 82
 83                 for(i=n.length()-1;i>=0;i--)
 84
 85                   {
 86
 87                   aa1[count]=n[i]-‘0‘;
 88
 89                     aa2[count]=n[i]-‘0‘;
 90
 91                     count++;
 92
 93                   }
 94
 95
 96
 97                 reverse(aa2,aa2+count);
 98
 99               int tem=0;
100
101                   int sum=0;
102
103                 for(i=1;i<=k;i++)
104
105                   {
106
107                      for(j=0;j<count;j++)
108
109                               aa1[j]=aa1[j]+aa2[j];
110
111                         sum++;
112
113                  for(j=0;j<count;j++)
114
115                                 {
116
117                               if(aa1[j]>9)
118
119                                       {
120
121                                  tem=aa1[j]/10;
122
123                                  aa1[j+1]=aa1[j+1]+tem;
124
125                                  aa1[j]=aa1[j]%10;
126
127                                       }
128
129                                 }
130
131                         if(aa1[j]!=0) count++;
132
133
134
135
136
137                   bool ifis=true;
138
139
140
141                     for(j=0,t=count-1;j<=t;j++,t--)
142
143                           {
144
145                          if(aa1[j]!=aa1[t])
146
147                                  {
148
149                              ifis=false;
150
151                                break;
152
153                                  }
154
155                           }
156
157
158
159                     if(ifis)
160
161                           {
162
163                       break;
164
165                           }
166
167                           else
168
169                           {
170
171                             for(j=0;j<count;j++)
172
173                                     aa2[j]=aa1[j];
174
175                               reverse(aa2,aa2+count);
176
177                           }
178
179                   }
180
181
182
183
184
185                   for(j=count-1;j>=0;j--)
186
187                         cout<<aa1[j];
188
189                   cout<<endl;
190
191                   cout<<sum<<endl;
192
193          }
194
195
196
197       }
198
199       return 0;
200
201 }

时间: 2024-10-04 00:31:14

Palindromic Number (还是大数)的相关文章

PAT 甲级 1024 Palindromic Number (25 分)(大数加法,考虑这个数一开始是不是回文串)

1024 Palindromic Number (25 分) A number that will be the same when it is written forwards or backwards is known as a Palindromic Number. For example, 1234321 is a palindromic number. All single digit numbers are palindromic numbers. Non-palindromic n

PAT1024. Palindromic Number

A number that will be the same when it is written forwards or backwards is known as a Palindromic Number.  For example, 1234321 is a palindromic number.  All single digit numbers are palindromic numbers. Non-palindromic numbers can be paired with pal

1024 Palindromic Number (25 分)

A number that will be the same when it is written forwards or backwards is known as a Palindromic Number. For example, 1234321 is a palindromic number. All single digit numbers are palindromic numbers. Non-palindromic numbers can be paired with palin

PTA(Advanced Level)1023.Palindromic Number

A number that will be the same when it is written forwards or backwards is known as a Palindromic Number. For example, 1234321 is a palindromic number. All single digit numbers are palindromic numbers. Non-palindromic numbers can be paired with palin

ZOJ - 3816 Generalized Palindromic Number

Description A number that will be the same when it is written forwards or backwards is known as a palindromic number. For example, 1234321 is a palindromic number. We call a number generalized palindromic number, if after merging all the consecutive

A1024. Palindromic Number (25)

A number that will be the same when it is written forwards or backwards is known as a Palindromic Number. For example, 1234321 is a palindromic number. All single digit numbers are palindromic numbers. Non-palindromic numbers can be paired with palin

1019. General Palindromic Number (20)

A number that will be the same when it is written forwards or backwards is known as a Palindromic Number. For example, 1234321 is a palindromic number. All single digit numbers are palindromic numbers. Although palindromic numbers are most often cons

A1019. General Palindromic Number (20)

A number that will be the same when it is written forwards or backwards is known as a Palindromic Number. For example, 1234321 is a palindromic number. All single digit numbers are palindromic numbers. Although palindromic numbers are most often cons

1019. General Palindromic Number

A number that will be the same when it is written forwards or backwards is known as a Palindromic Number. For example, 1234321 is a palindromic number. All single digit numbers are palindromic numbers. Although palindromic numbers are most often cons