PAT甲级1024 Palindromic Number (Python)

本题翻译:
题目给出两个数字,一个是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)

PAT甲级1024 Palindromic Number (Python)

如果以上案例没有看懂,测试始终无法通过,可以测试以下几个测试点:
67 3
0 0
0 1
69 3
69 5

如果都能成功,基本测试不会太大的问题,如果还有问题,欢迎私聊哇~
PAT甲级1024 Palindromic Number (Python)

上一篇:Java之向上转型的内存图


下一篇:echarts重新加载重绘问题 === Y轴单位自动适应(转换)大小