Python实现——两位整数相乘形成的最大回文数是 9009 = 99 × 91。编写程序,求得任意输入的 n 位整数相乘形成的最大回文数。

编程入门 行业动态 更新时间:2024-10-09 10:19:36

Python实现——两位整数相乘形成的最大<a href=https://www.elefans.com/category/jswz/34/1769494.html style=回文数是 9009 = 99 × 91。编写程序,求得任意输入的 n 位整数相乘形成的最大回文数。"/>

Python实现——两位整数相乘形成的最大回文数是 9009 = 99 × 91。编写程序,求得任意输入的 n 位整数相乘形成的最大回文数。

题目内容:
两位整数相乘形成的最大回文数是 9009 = 99 × 91。编写程序,求得任意输入的 n 位整数相乘形成的最大回文数。

输入格式:
正整数 n

输出格式:
n 位整数相乘形成的最大回文数

输入样例:
2

输出样例:
9009

【基本思路】从大到小枚举可能的n位数因子,从中找到最大的回文数乘积。
【优化】试图缩小因子的取值范围,减少循环次数。
【分析】设两个因子分别为 i i i和 j j j,取 i i i等于因子可能的最大值 1 0 n − 1 10^n-1 10n−1,从大到小枚举 j j j,一定可以找到回文数 N N N,设此时 j = j 0 j=j_0 j=j0​。则 i > j 0 i>j_0 i>j0​, j > = j 0 j>=j_0 j>=j0​,否则 i ∗ j < N i*j<N i∗j<N, i ∗ j i*j i∗j不可能是最大回文数。根据这个思路进行编程,代码如下:

def Is_palindrome(s):    #判断回文数l=len(s)for i in range((l-1)//2+1):if s[i]!=s[l-1-i]: return Falsereturn Truedef find(n):base=10**n-1   #因子的基准值(从10^n-1开始减小)for j in range(base,0,-1):if Is_palindrome(str(base*j)):max=base*jmini=j    #因子可能的最小值(如果i或者j小于mini的话,i*j一定小于base*mini)breakfor i in range(base,mini,-1):for j in range(i,mini,-1):if Is_palindrome(str(i*j)):if i*j>max: max=i*jreturn maxn=int(input())
print(find(n))

更多推荐

Python实现——两位整数相乘形成的最大回文数是 9009 = 99 × 91。编写程序,求得任意输入的 n 位整数相乘形成的最大回文数。

本文发布于:2024-02-13 14:04:50,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1759164.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:回文   整数   两位   程序   Python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!