题目大意
给一个10进制数 N N N和 D D D,求 N N N转成 D D D进制后是否是回文数(如果一个数从前往后和从后往前看都是一样的,就称这个数是回文数)只有一位的数也是回文数
输入
每组包含一个测试样例,每个样例第一行就是两个正整数 N N N( 0 ≤ N ≤ 1 0 9 0 \leq N \leq 10^9 0≤N≤109), D D D( 2 ≤ D ≤ 1 0 9 2 \leq D \leq 10^9 2≤D≤109)
输出
如果这个数转成
D
D
D进制后是回文数就先输出Yes
否则输出No
,之后一行输出
N
N
N在
D
D
D进制下的每一位,每一位之间用空格分开,行尾没空格
输入样例
27 2
121 5
输出样例
Yes
1 1 0 1 1
No
4 4 1
解析
转完进制后判断一下是不是回文数就行
def tran(n, d):
res = list()
while n:
res.append(n % d)
n //= d
return res[::-1]
def solve():
n, d = map(int, input().split())
res = tran(n, d)
flag = True
for i in range(len(res)):
if len(res) - i - 1 >= i:
if res[i] != res[len(res) - 1 - i]:
flag = False
break
print("Yes" if flag else "No")
for i in range(len(res)):
print(res[i], end=("\n" if i == len(res) - 1 else " "))
if __name__ == "__main__":
solve()