解法一:回文数+高精度
模拟,注意输入范围,需要使用高精度。
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;}}
