题目大意
一个数如果从前往后和从后往前看是一样的,那么这个数就是回文数。
现在给数
N
N
N(
≤
1
0
10
\leq 10^{10}
≤1010)和
K
K
K(
≤
100
\leq 100
≤100),分别表示初始的数和最大的变换步数,求
N
N
N在
K
K
K次变换内能否变成回文数。变换是指将
N
N
N逆序后得到数
M
M
M,然后
N
+
=
M
N+=M
N+=M
输入
每组包含一个测试用例,每个用例为一行有两个正整数 N N N和 K K K
输出
对每个例子输出两行,第一行输出 N N N在 K K K次变换内所得的最小回文数,如果不能得到回文数,就输出 N N N变换 K K K次得到的数,第二行输出 N N N在 K K K次变换内最少需要多少次变成回文数,如果不能变成回文数,就输出 K K K
样例输入
67 3
69 3
样例输出
484
2
1353
3
解析
这题原本要考大整数的加法,但是python就没那么麻烦,直接相加然后判断即可
def check(s): #判断回文
if s == s[::-1]:
return True
else:
return False
def solve():
n, k = map(int, input().split())
cnt = 0
for i in range(k):
if check(str(n)):
break
n = n + int(str(n)[::-1])
cnt += 1
print(n)
print(cnt)
if __name__ == "__main__":
solve()