n,b = map(int,input().split())
# 对0进行特判
if n == 0:
print("Yes")
print("0")
exit()
res = []
while n:
res.append(n % b)
n //= b
if res == res[::-1]:
print("Yes")
else:
print("No")
first = True
for x in res[::-1]:
if first:
first = False
print(x,end = '')
else:
print(" " + str(x),end = '')
"""
这种写法在PAT会报格式错误,因为多一个空格
for x in res[::-1]:
print(x,end = ' ')
"""
还可以使用字符串的join方法避免该种格式错误:
但是join的参数必须是字符串列表,而不能是其他列表
要将一个整数列表转换为字符串列表,你可以使用列表推导式(list comprehension)或者内置的 map
函数。以下是两种方法的示例:
方法一:使用列表推导式
li = [1, 2, 3, 5]
li = [str(i) for i in li]
print(li) # 输出: ['1', '2', '3', '5']
方法二:使用 map
函数
li = [1, 2, 3, 5]
li = list(map(str, li))
print(li) # 输出: ['1', '2', '3', '5']
这两种方法都会将整数列表 li
转换为字符串列表。选择哪种方法主要取决于你的个人偏好和代码风格。
因此,上述输出的代码可改为:
# 列表推导式
res = [str(i) for i in res[::-1]]
print(" ".join(res))
或者
res = list(map(str,res[::-1]))
print(" ".join(res))