B4276 [蓝桥杯青少年组国赛 2023] 八进制回文平方数(python 题解)
·
def decimal_to_octal(n):
o = ""
while n > 0:
o = str(n % 8) + o
n = n // 8
return o if o else "0"
def is_palindrome(s):
return s == s[::-1]
def main():
N = int(input())
##读取输入的 N。
r = []
u = 1
while True:
s = u * u
## 遍历可能的平方数(通过遍历整数 u,计算 u * u)。
if s > N:
break
c = decimal_to_octal(s)
## decimal_to_octal 函数:将十进制数转换为八进制字符串。
if is_palindrome(c):
## is_palindrome 函数:判断一个字符串是否是回文数。
r.append(str(s))
## 检查平方数是否小于等于 N,且其八进制表示是否是回文数。
u += 1
print(" ".join(r))
## 收集满足条件的平方数并输出。
if __name__ == "__main__":
main()
更多推荐

所有评论(0)