学渣小羊 2024-11-20 12:47 采纳率: 0%
浏览 5

回文数.1怎么做怎么做

题目描述

若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。例如:给定一个十进制数 56 ,将 56 加 65 (即把 56 从右向左读),得到 121 是一个回文数。

又如:数87:

STEP1:87+78=165
STEP2:165+561=726
STEP3:726+627=1353
STEP4:1353+3531=4884
在这里的一步是指进行了一次加法,上例最少用了 4 步得到回文数 4884 。

写一个程序,给定一个数 M ,求最少经过几步可以得到回文数。如果在 30 步以内(包含 30 步)不可能得到回文数,则输出 Impossible! 。

输入格式

一个整数 M ( 0 < M < {10}^{12}10
12
)。

输出格式

如果能在 30 步以内得到回文数,输出步数

否则输出 Impossible!。

样例

输入数据 1
87
输出数据 1
4

  • 写回答

1条回答 默认 最新

  • Roc-xb 领域专家: 后端开发技术领域 2024-11-20 13:05
    关注
    
    def is_palindrome(num):
        """判断是否为回文数"""
        s = str(num)
        return s == s[::-1]
    
    def reverse_and_add(num):
        """反转数字并相加"""
        reversed_num = int(str(num)[::-1])
        return num + reversed_num
    
    def find_palindrome_steps(m):
        steps = 0
        while steps < 30:
            if is_palindrome(m):
                return steps
            m = reverse_and_add(m)
            steps += 1
        return "Impossible!"
    
    # 输入与输出
    if __name__ == "__main__":
        m = int(input())
        print(find_palindrome_steps(m))
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 11月20日