如果一个数字从左边读和从右边读一样,那么这个数字就是一个回文数。例如32123就是一个回文数;17在某种意义上也是一个回文数,因为它的二进制型式——10001——是一个回文数。
请你帮忙开发一个程序,判断一个数n在任意进制(2-16)下是否有回文数。
输入包含多组数据。
每组数据包括一个正整数n (1≤n<2^31)。
对应每组数据,如果n在2-16进制下存在回文数,则输出“Yes”;否则输出“No”。
32123<br/>17
Yes<br/>Yes
def baseN(num, b):
return ((num == 0) and "0") or (baseN(num // b, b).lstrip("0") + "0123456789abcdefghijklmnopqrstuvwxyz"[num % b])
while True:
try:
a,havaParo=int(input()),False
for i in range(2,17):
if baseN(a,i)==baseN(a,i)[::-1]:
havaParo=True
break
print("Yes" if havaParo else "No")
except:
break