本题翻译:
题目给出两个数字,一个是N,一个是K,判断N是否为回文数字,如果不是,将N转换成回文数字后加N,再判断是否为回文数字,循环K次,直到看见回文数字为止,如果在K次循环之内没有看见回文数字,则输出循环了K次的数字,其中个位数默认是回文数字。
本题思路:
写两个函数,一个是判断回文函数,一个是将数字转换成回文数字。
注意事项:
本题一直不能通过,有好几个细节问题,最开始一测,只过了几个测试点,后来发现细节很多。
1.个位数是否判断为回文数字。
2.循环次数为0是否能输出。
3.是否确保循环次数和回文次数相等时,能输出。
4.无法凑数成功时,能否输出。
这些细节都注意到之后,测试才能通过。
代码样例:
#判断回文序列
def Palindromic(num):
num = str(num)
k = len(num)
for i in num:
if i == num[k-1]:
k -= 1
else:
return False
return True
#给出回文序列
def Pali(num):
a = ""
num = str(num)
for i in range(len(num)-1,-1,-1):
a+=num[i]
return int(a)
m,n = map(int,input().split())
store = -1#是否参与循环
store1 = -1#是否在最后参与了循环
for i in range(n):
if Palindromic(m):
print(m)
store = i
if len(str(m))==1:
print(i)
else:
print(i)
break
else:
m = m+Pali(m)
store = i
store1 = i
#无法凑 直接输出
if Palindromic(m)==False and store!=-1:
print(m)
print(n)
#确保最后一个数恰好等于循环不到的那个数 输出
if len(str(m))!=1 and Palindromic(m)==True and store1+1 == n:
print(m)
print(n)
#确保 循环次数为0能输出
if len(str(m))!=1 and store == -1:
print(m)
print(n)
#确保 循环次数为0 且 个位数能输出
if len(str(m))==1 and store == -1:
print(m)
print(n)
如果以上案例没有看懂,测试始终无法通过,可以测试以下几个测试点:
67 3
0 0
0 1
69 3
69 5
如果都能成功,基本测试不会太大的问题,如果还有问题,欢迎私聊哇~