解法一:回文数+高精度
模拟,注意输入范围,需要使用高精度。
import java.io.*;
import java.math.BigInteger;
public class Main {
public static void main(String[] args) throws IOException {
StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
in.nextToken();
BigInteger N = new BigInteger(String.valueOf((long)in.nval));
in.nextToken();
int K = (int) in.nval;
for (int i = 0; i < K; ++i) {
if (isPalindromic(N)) {
out.println(N);
out.println(i);
out.flush();
return;
}
N = plus(N);
}
out.println(N);
out.println(K);
out.flush();
}
private static BigInteger plus(BigInteger n) {
BigInteger s = new BigInteger("0");
char[] chars = n.toString().toCharArray();
for (int i = chars.length - 1; i >= 0; --i) {
BigInteger bit = new BigInteger(String.valueOf(chars[i] - 48));
s = s.multiply(BigInteger.TEN).add(bit);
}
return s.add(n);
}
private static boolean isPalindromic(BigInteger n) {
boolean flag = true;
char[] chars = n.toString().toCharArray();
int len = chars.length;
for (int i = 0; i < len / 2; ++i) {
if (chars[i] != chars[len - i - 1]) {
flag = false;
break;
}
}
return flag;
}
}