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()

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐