使用数组记录每一位的数字,数组要开大一些,否则有两个测试点会发生段错误。
//
// main.cpp
// PATA1024
//
// Created by Phoenix on 2018/2/7.
// Copyright © 2018年 Phoenix. All rights reserved.
//
#include <iostream>
#include <cstdio>
int s[100];
int num = 0;
void add(int a[]){
int c = 0;
int b[100];
for(int i = 0; i < num; i++) {
b[i] = a[i] + a[num - 1 - i] + c;
c = b[i] / 10;
b[i] %= 10;
}
if(c > 0) {
b[num] = c;
num++;
}
for(int i = 0; i < num; i++) {
s[i] = b[i];
}
}
int main(int argc, const char * argv[]) {
long long a;
int k, t = 0;
bool flag = false;
scanf("%lld %d", &a, &k);
while(a != 0) {
s[num++] = a % 10;
a /= 10;
}
while(flag == false && t < k){
bool flag1 = true;
for(int i = 0, j = num - 1; i <= j; i++, j--) {
if(s[i] != s[j]) flag1 = false;
}
if(flag1 == true){
for(int i = 0; i < num; i++) {
printf("%d", s[i]);
}
printf("\n%d", t);
flag = true;
} else {
t++;
add(s);
}
}
if(flag == false){
for(int i = num - 1; i >= 0; i--) {
printf("%d", s[i]);
}
printf("\n%d", t);
}
return 0;
}