7-9 1.2.5 双重回文数 (70分)

如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做“回文数”.例如,12321 就是一个回文数,而 77778 就不是.

当然,回文数的首和尾都应是非零的,因此 0220 就不是回文数. 事实上,有一些数(如 21),在十进制时不是回文数,但在其它进制(如二进制时为 10101)时就是 回文数.

编一个程序,读入两个十进制数 N (1 <= N <= 15) S (0 < S < 10000)

然后找出前 N 个满足大于 S 且在两种以上进制(二进制至十进制)上是回文数的十进制数,输出到 文件上.

本问题的解决方案不需要使用大于 4 字节的整型变量.

输入格式:
只有一行,用空格隔开的两个数 N 和 S.

输出格式:
N 行, 每行一个满足上述要求的数,并按从小到大的顺序输出.

输入样例1:
在这里给出一组输入。例如:

3 25

输出样例1:
在这里给出相应的输出。例如:

26
27
28

输入样例2:

9 10

输出样例2:

15
16
17
18
20
21
24
26
27

输入样例3:

15 9900

输出样例3:

9958
10252
10308
10658
10794
10858
10922
10986
11253
11314
11757
11898
11950
12291
12355

【源代码】

#include <iostream>  
#include <vector>
#include <string>  
#include <algorithm>  
using namespace std;

bool Palin_num(const string a) // 回文数判断函数,使用字符串判断法:回文数关于中心对称,只要比较对称的数即可;
{
    int length;
    length = a.length();
    int flag = 1;
    for (int i = 0; i <= (length / 2); i++)
    {
        if (a[i] != a[length - i - 1])
        {
            flag = 0;
            break;
        }
    }
    if (flag == 1) // 是回文数;
    {
        return true;
    }
    else
    {
        return false;
    }
}

string intToA(int n, int radix)    //进制转换函数,n是待转数字,radix是指定的进制
{
    string ans = "";
    do {
        int t = n % radix;
        if (t >= 0 && t <= 9)
        {
            ans += t + '0';
        }
        else
        {
            ans += t - 10 + 'A';
        }
        n /= radix;
    } while (n != 0);	// 使用do{}while()以防止输入为0的情况
    reverse(ans.begin(), ans.end());
    return ans;
}

int main()
{
    int n, s;
    cin >> n >> s;
    s++; //双重回文数要大于s,从s+1开始遍历;
    vector<int> p; // 容器p,存放双重回文数;
    int sum; // 记录有几种进制的数是回文数;
    while ((p.size() < n)) // 根据容器p里双重回文数的个数决定是否终止程序;
    {
        sum = 0;
        for (int i = 2; i <= 10; i++)
        {
            if (Palin_num(intToA(s, i))) // 此时对应进制的数是回文数;
            {
                sum++; // 记录次数+1;
            }
        }
        if (sum >= 2) // 双重回文数,压入容器p中;
        {
            p.push_back(s);
        }
        s++; // 继续遍历;
    }
    for (int i = 0; i < p.size(); i++)
    {
        cout << p[i] << endl;
    }
    return 0;
}

热门文章

暂无图片
编程学习 ·

Spring Boot整合Zookeeper实现配置中心

简介 使用背景 说到配置中心,目前市面上用的较多的配置中心都广为人知,比如百度的Disconf、Spring Cloud Config、携程的Apollo、阿里的Nacos等。由于项目组一直是使用的zookeeper作为配置中心,所以来学习使用。 实现原理在Zookeeper建立一个根节点,比如/CONFIG,代表某个配…
暂无图片
编程学习 ·

unordered_map/unorderd_set使用与哈希介绍

在C++98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到 O(logN),即最差情况下 需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好的查询是,进行很少的比较次 数就能够将元素找到,因此在C++11中,STL又提供了4个unordered系列的…
暂无图片
编程学习 ·

依赖注入

1.依赖注入的概念 依赖注入( Dependency Injection ,简称 DI) 与控制反转 (loC) 的含义相同,只不过这两个称呼是从两个角度描述的同一个概念。 当某个 Java 对象(调用者)需要调用另一个 Java 对象(被调用者,即被依赖对象)时, 在传统模式下,调用者通常会采用 "new 被调…
暂无图片
编程学习 ·

Java并发编程之深入理解volatile

个人博客请访问 http://www.x0100.top 1. 保证可见性volatile保证了不同线程对volatile修饰变量进行操作时的可见性。对一个volatile变量的读,(任意线程)总是能看到对这个volatile变量最后的写入。一个线程修改volatile变量的值时,该变量的新值会立即刷新到主内存中,…
暂无图片
编程学习 ·

FIF智慧教学平台使用电脑获取手机相册教程

需要准备工具如下:手机一部 电脑一台 数据线一根1.手机连接电脑 首先用数据线将手机和电脑连在一起,然后你会发现你的手机出现了这样一个东西(博主用的是魅族手机,其余手机与之类似):然后点击这个东西进入下面的页面,选择文件传输:这样手机连接电脑的操作就完成了。 2.…
暂无图片
编程学习 ·

layui layer.open 弹窗,title标题根据不同场景显示不同的值

以表格操作弹窗为例表格有添加,修改,查看等等共用一个编辑弹窗,这时候弹窗标题就需要根据操作变化发生变化 废话少说,具体操作代码如下: parent.$(".layui-layer-title")[0].innerText= “要修改的内容”; //情况不同可能不需要parent的就别加 $(".layui-…
暂无图片
编程学习 ·

【备忘】PHP读取apk安装包信息

PHP读取apk安装包信息可以获取应用名称、包名、版本信息等[已测试通过]感谢前辈贡献的代码!!直接上代码->biu~以下是底层封装:<?phpnamespace libraries\apk;use think\Exception;class ApkParser{//----------------------// 公共函数,供外部调用//---------------…
暂无图片
编程学习 ·

D_SparkSQL

C_SparkSQL 一. 概述 1. 什么是SparkSQL Spark SQL是Spark用来处理结构化数据的一个模块,它提供了2个编程抽象:DataFrame DataSet并且作为分布式SQL查询引擎的作用。 众所周知的Hive,它是将Hive SQL转换成MapReduce然后提交到集群上执行,大大简化了编写MapReduc的程序的复杂…
暂无图片
编程学习 ·

ssm框架下简单的增删改查实现

ssm框架下简单的增删改查实现 代码太多就不逐一展示了,到目前为止这几个类之间的关系还是有点不太清楚。 package controller;import bean.User; import dao.UserDao; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype…
暂无图片
编程学习 ·

Java工厂模式解耦合的例子

目录第一个例子第二个例子第三个例子第四个例子Reference 最终项目路径如下:第一个例子 假设有如下接口, package service;public interface Notice {public void work(String message); }实现类如下, package service;public class NoticeImpl implements Notice {@Overrid…
暂无图片
编程学习 ·

Mybatis直接写sql与使用association映射性能比较

最近在公司发现前辈写多表查询时使用mybatis并未使用等标签封装数据 这引发我对mybatis=有无使用标签进行数据查询的性能比较产生了兴趣,于是乎~~~做了个小小的测试 首先建立两个表:student 和 teacher teacher表结构:student表结构:用java分表为两个表写了个120万的循环…
暂无图片
编程学习 ·

OpenVino cmake error

问题描述:安装OpenVino后运行Demo时CMake出错When I try to run the demo, during the inference engine build, I get an error related to cmakeI installed cmake on windows. I have windows 10 OS and VS 2015. Kindly advice how I can get rid of this error and make …
暂无图片
编程学习 ·

CentOS系统Docker搭建MySQL服务(解决Docker MySQL无法输入中文问题)

MySQLMySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。 MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。Docker 搭建MySQL服务…
暂无图片
编程学习 ·

阿里云学生机选择指南(用途和优势)

概述 现在国内知名大牌云服务商(阿里云)对学生都是很优惠的,阿里云学生服务器,阿里云也推出了9.5元购买云服务器的优惠活动,是一款固定的优惠套餐,包含特价云服务器,但是好多学生却不知道在哪里申请,需要什么条件,流程是怎么样的,下面给大家做个介绍 云翼计划是阿里云…
暂无图片
编程学习 ·

项目经理不懂带人就自己累到死

很多项目经理一天到晚都在忙,加班是家常便饭,项目经理一定要学会带人,你的工作才会轻松。美国著名军事家克里奇有一句名言:没有不好的组织,只有不好的领导。项目管理也是如此,没有不好的员工,只有不好的项目经理。如果能够掌握好的管理方法,刺头员工也会变成千里马。什…
暂无图片
编程学习 ·

重启

纪念一下,2020年4月7日因为紧急事故不得不放弃春招,到今天继续头铁,已经过去了接近三个月,一边处理事情,一边兼顾自己的课程,算是身心疲惫吧,很庆幸自己能继续在这敲代码,不过总算挺过来了。 实验室的事宜这段时间基本没参与,校赛和一个不知什么名字的比赛也没有去处理…