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

题目内容:

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

输入格式:

正整数 n

输出格式:

n 位整数相乘形成的最大回文数

输入样例:

2

输出样例:

9009

时间限制:1000ms内存限制:32000kb

def palin(num):
    num_p = 0
    num_t = num
    while num_t != 0:
        num_p = num_p * 10 + num_t % 10
        num_t = num_t / 10
    if num_p == num:
        return True
    else:
        return False
def num_max(n):
    x = 10 ** n - 1
    return x
n = int(raw_input())
x = num_max(n)
y = num_max(n)
num = 0
count = 0
min_y = 0
while count != -1:
    x -= 1
    count += 1
    num_t = x * y
    if palin(num_t):
        if num_t >= num:
            num = num_t
            min_y = x
    if num_t <= num or num_t <= 10 ** (n*2-1) or count >= 10 ** 3:
        num_t <= 10 ** (n*2-1)
        y -= 1
        x = y
        count = 0
        if y == min_y:
            count = -1
print num

时间: 2024-10-15 18:20:54

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

任意输入一个4位正整数,调用函数(函数自定义)输出该正整数数的各位数 字组成的最大数。

/*任意输入一个4位正整数,调用函数(函数自定义)输出该正整数数的各位数字组成的最大数.*/#include <stdio.h>int numb(int a){ int i = 0, j = 0,sum = 0, b[4]; b[0] = a%10; b[1] = a/10%10; b[2] = a/100%10; b[3] = a/1000; for (i = 0 ;i < 4; i++) { for(j = 0;j < 3 - i; j++) { if(b[j] > b[

一个序列,除了一个数出现两次,其他数都出现一次,找出来重复的这个数-位运算应用(异或运算)

一个序列,除了一个数出现两次,其他数都出现一次,找出来重复的这个数-位运算应用 面试的题目 贴一下代码: 1 //位运算应用 2 #include<bits/stdc++.h> 3 using namespace std; 4 typedef long long ll; 5 const int maxn=1e5+10; 6 7 int n; 8 int a[maxn]; 9 10 void found(){ 11 int xors=0; 12 for(int i=0;i<n;i++){

黑马程序员——c语言学习心得——位运算符

黑马程序员——c语言学习心得——位运算符 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 位运算符C语言提供了六种位运算符: & 按位与 | 按位或 ^ 按位异或 ~ 取反 << 左移 >> 右移 1. 按位与运算 按位与运算符"&"是双目运算符.其功能是参与运算的两数各对应的二进位相与.只有对应的两个二进位均为1时,结果位才为1 ,否则为0.参与运算的数以补码方式出现. 例如:9&

61.从键盘输入10个正数存入数组x中,然后输入要查找的整数a,如找到则输出a及a的下标,如找不到,则把a存入到数组的最后。

#include<iostream> using namespace std; int main() { int a[11]; int x; cout<<"please input 10 numbers:"<<endl; for(int i=0;i<10;i++) { cin>>a[i]; } cout<<"please the number you want to find:"<<end

OJ题:输入一个多位的数字,求各数位相加。

题目内容: 输入一个多位的数字,1求各数位相加. 例如输入12345,则计算1+2+3+4+5=15 输入格式: 一个整数 输出格式: 一个整数 输入样例: 1234567890 输出样例: 45 时间限制:500ms内存限制:32000kb 实现程序: #include <stdio.h> #include <stdlib.h> #include <string.h> int cnt_count(int value) { int count = 0 , cnt = 0

input表单只允许输入大于0的整数

1.<input type="tel" name="num"  maxlength="5" onkeyup="carNum($(this))"/> type="tel"表示是输入类型用于应该包含电话号码的输入字段,是html5的input属性 maxlength:表示input表单输入的个数最多是5位,不能超过5位数 2.input表单只允许输入大于0的整数 /********input表单只允

设计一个程序,让它能够返回一个整数数组最大子数的和,并能完成几项测试

实验人员:常啸帆,毕文强 实验要求:必须能处理1000个元素: 每个元素是int32类型的,出现子数组之和大于显示最大范围会出现什么情况: 输入一个整形数组,有正也有负: 数组中连续的一个或多个整数组成一个数组,每个子数组都必须有一个和: 求所有子数组和的最大值,要求时间复杂度为o(n).实验过程:在本次实验中,我们两人通过所学的c++知识来编写程序,在过程中我们发现了一下问题并逐步解决 在编写的过程中,首先会发现数组中少了一个元素,那是因为在循环时length写成了length-1,     

无法使用32位程序为正在运行的64位系统服务

最近在做一个补丁管理功能,其中有一个过程是把补丁从服务器下载下来,然后进行安装. 发现在Windows Vista及其之后的Windows 7.Windows 8等系统中,微软的提供了两种格式的补丁包:.psf和.cab,在Windows XP之前,是会有.exe格式的补丁文件,直接运行就可以进行安装.我选择了安装.cab格式的补丁包,安装的时候需要执行一个命令,如下: dism /online /add-package /packagepath:补丁包路径 用管理员权限运行CMD命令窗口,输入

解决方法:64位系统-未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序

原文:解决方法:64位系统-未在本地计算机上注册"Microsoft.Jet.OLEDB.4.0"提供程序 win7或win8 64位下调试程序,出现这样的错误提示:未在本地计算机上注册 Microsoft.Jet.OLEDB.4.0 提供程序 解决方法如下: 方法一:“设置应用程序池默认属性”/“常规”/”启用32位应用程序”,设置为 true. 如下图所示: 方法二:生成->配置管理器->平台->点击Any Cpu选项卡->新建->新建平台->X