本题翻译:
题目给出两个数字,一个是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 30 00 169 369 5
如果都能成功,基本测试不会太大的问题,如果还有问题,欢迎私聊哇~