Vijos P1034 回文数

C语言 BC158 [NOIP1999]回文数题解(含多个示例) 阅读详情

Vijos P1034 回文数


描述

若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。

例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数。

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

写一个程序,给定一个N(2<=N<=10或N=16)进制数M,其中16进制数字为0-9与A-F,求最少经过几步可以得到回文数。如果在30步以内(包含30步)不可能得到回文数,则输出“Impossible!”
格式
输入格式

共两行
第一行为进制数N(2<=N<=10或N=16)
第二行为N进制数M(0<=M<=maxlongint)

输出格式
共一行
第一行为“STEP=”加上经过的步数或“Impossible!”

样例
样例输入
9
87

样例输出
STEP=6

限制
各个测试点1s

来源
NOIP1999提高组第2题


思路

思路是枚举,此题主要注意不同进制的加法即可。采用v[]来存放字符串转换为的整数,用vr[]存放逆序的v。 参考大V博客

AC源码

#include<iostream>
#include<cstdio>
using namespace std;

int main()
{
    int n;
    string m;
    cin>>n>>m;

    int v[20],vr[20];                    //v是字符串转换为整数 下标小的放低位 下标大的放高位
    int len=m.length();
    for(int i=len-1,j=0;i>=0;i--,j++)
    {
        if(m[i]>='A')
            v[j]=m[i]-'A'+10;           //处理十六进制

        else
            v[j]=m[i]-'0'; 
    } 

    //逆序放入vr
    for(int i=0;i<len;i++)
    {
        vr[i]=v[len-i-1];
    } 

    //相加
    for(int i=1;i<=30;i++)
    {
        int jinwei=0;
        for(int j=0;j<len;j++)
        {
            v[j]+=vr[j]+jinwei;
            jinwei=v[j]/n;         //进位等于加起来除以进制
            v[j]%=n;               //如果大于等于进制那么就会改变 
        }
        if(jinwei>0)
        {
            v[len++]=jinwei;         //如果最后有进位产生 那么就进一位 
        }

        //判断是否是回文
        int s=0,e=len-1; 
        while(s<=e)
        {
            if(v[s]!=v[e])
                break;

            s++;e--;
        }

        if(s>e)
        {
            printf("STEP=%d\n",i);
            return 0;
        }

        else
        {
            //逆序放入vr
            for(int i=0;i<len;i++)
            {
                vr[i]=v[len-i-1];
            } 
        }    
    } 

    printf("Impossible!");


    return 0;
}
C语言每日一题(24)回文素数题解 具体方法:从所输入的字符数组右往左提取每一个值,通过减去字符0的方法得到对应字符的整型,乘以它们对应位置的权值,权值的计算就是n在该位置的次方(pow(n,len-i-1))(可以去看看n进制于十进制之间转换的方法,加深理解),再将值累加到所定义的sum里面。思路就是将所得的值(sum)取模运算拿到每一位的值,对n进行求余整除(基于十进制转n进制的方法), 加上字符0完成整型到字符型的转换,放到字符数组里。例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数。 阅读详情

相关推荐

【例1.6】回文数(Noip1999)

例如:给定一个 10进制数 56,将 56加 65(即把56从右向左读),得到 121是一个回文数。写一个程序,给定一个N(2<N<=10或N=16)进制数 M.求最少经过几步可以得到回文数。如果在30步以内(包含30步)不可能得到回文数,则输出“Impossible”。如果在30步以内(包含30步)不可能得到回文数,则输出“Impossible”。在这里的一步是指进行了一次N进制的加法,上例最少用了4步得到回文数4884。第1行,给定一个N(2<N≤10或N=16)表示进制;第2行,一个N进制数M。

LBZ的博客 363

算法训练 回文数

问题描述   若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。   例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数。   又如:对于10进制数87:   STEP1:87+78 = 165 STEP2:165+561 = 726   STEP3:726+627 = 1353 STEP4:1353+3531 = 4884   ...

ChanCherry的博客 1431

洛谷P1015 [NOIP1999 普及组] 回文数

写一个程序,给定一个 �N(2≤�≤102≤N≤10 或 �=16N=16)进制数 �M(100100 位之内),求最少经过几步可以得到回文数。如果在 3030 步以内(包含 3030 步)不可能得到回文数,则输出。例如:给定一个十进制数 5656,将 5656 加 6565(即把 5656 从右向左读),得到 121121 是一个回文数。在这里的一步是指进行了一次 �N 进制的加法,上例最少用了 44 步得到回文数 48844884。两行,分别是 �N,�M。

m0_72614289的博客 566

【洛谷】【高精度】【字符串】P1015 [NOIP1999 普及组] 回文数

题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。 例如:给定一个十进制数 56,将 56 加 65(即把 56 从右向左读),得到 121 是一个回文数。 又如:对于十进制数 87: STEP1:87+78=165 STEP2:165+561=726 STEP3:726+627=1353 STEP4:1353+3531=4884 在这里的一步是指进行了一次 N进制的加法,上例最少用了 4 步得到回文数 4884。 写一个程序,给定一个 N(2≤N≤10 或 N=16)进

要像蜗牛一样一步一步往上爬! 927

别再套用星形公式了!三角形接法PMSM的FOC控制,扇区判断与作用时间推导全解析

本文深入解析三角形接法永磁同步电机(PMSM)的FOC控制技术,重点探讨30度相位差对SVPWM扇区判断与电压矢量作用时间的影响。通过数学推导与实验验证,详细讲解修正后的扇区划分规则、作用时间计算公式优化方法,并提供可直接移植到STM32的代码实现,帮助工程师解决三角形接法特有的相电流重构与同步采样难题。

weixin_30689307的博客 468

高德地图+Three.js实战:手把手教你打造数字农场3D可视化大屏(附完整源码)

本文详细介绍了如何利用高德地图JS API与Three.js技术栈,构建一个功能强大的数字农场3D可视化大屏。文章从技术选型、架构设计出发,深入讲解了坐标对齐、图层管理、性能优化等核心工程实践,并提供了完整的模块化代码示例,旨在为智慧农业及类似场景的3D地理可视化项目提供一套可复用的解决方案。

k8s6orchestrator的博客 890

题解【洛谷】P1015 回文数

题目描述: 链接:https://www.luogu.com.cn/problem/P1015 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。例如:给定一个 十进制数 5656,将 5656 加 6565(即把 5656 从右向左读),得到 121121 是一个回文数。 题意理解: 这是一道很明显的高精度加法的模拟题,如果这个数是回文数,那就输出到这个回文数的步数,输出格 式要注意一下,如果不是就把这个数和这个数反过来加起来。 思路分解: 先把高精度加法板子打起来 把输

摸摸加油 1503

Flink实战项目——城市交通实时监控平台

本项目是与公安交通管理综合应用平台、机动车缉查布控系统等对接的,并且基于交通部门现有的数据平台上,进行的数据实时分析项目。

yangwei2048的博客 837

信息学奥赛一本通:1309:【例1.6】回文数(Noip1999)

【题目描述】 若一个数(首位不为零)从左向右读与从右向左读都是一样,我们就将其称之为回文数。例如:给定一个 10进制数 56,将 56加 65(即把56从右向左读),得到 121是一个回文数。又如,对于10进制数87, STEP1: 87+78= 165 STEP2: 165+561= 726 STEP3: 726+627=1353 STEP4:1353+3531=4884 在这里的一步是指进行了一次N进制的加法,上例最少用了4步得到回文数4884。 写一个程序,给定一个N(2<N<=10或N=16

ffsdfg的博客 1451

【浙大翁恺】C语言习题

/* 02-0. 整数四则运算(10) 本题要求编写程序,计算2个正整数的和、差、积、商并输出。 题目保证输入和输出全部整型范围内。 输入格式: 输入在一行中给出2个正整数A和B。 输出格式: 在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商。 输入样例: 3 2 输出样例: 3 + 2 = 5 3 - 2 = 1 3 * 2 = 6 3 / 2 =.

qq_43600867的博客 5854

使用ADS进行LNA低噪放设计的详细教程

详细介绍了通过ADS软件进行LNA设计的过程,从晶体管的选型到稳定性系数分析、再到输入输出端匹配,完整的讲解了低噪放的设计流程,可以使新手小白以及学习射频放大器的朋友可以快速的了解掌握ADS的使用方法和LNA的设计方法。

weixin_41831333的博客 3448

回文数

FJNU.1461Description若一个数(首位不为零)从左向右读与从右向左读都是一样,我们就将其称之为回文数。例如:给定一个 10进制数 56,将 56加 65(即把56从右向左读),得到 121是一个回文数。又如,对于10进制数87,                   STEPl: 87+78= 165       STEP2: 165+561= 726              

linyq@BambooFan ~ 1372

别再瞎调了!手把手教你用ADI IIO Oscilloscope配置AD936x的AGC(附Pluto SDR实测)

本文详细介绍了如何使用ADI IIO Oscilloscope工具配置AD936x系列射频捷变收发器的自动增益控制(AGC)功能,包括Slow/Fast Attack模式的参数设置与优化技巧。通过Pluto SDR硬件实测演示,帮助开发者快速掌握AGC配置方法,提升无线通信系统的接收性能。

weixin_30267785的博客 577

回文数 「NOIP 1999」

Noip [1999] 回文数

Wiki_H的博客 1314

多元相关性分析_PAST:最简便易用的统计学分析软件教程目录

欢迎来到PAST的世界!本教程并不是将PAST的所有功能均进行详细介绍,而只是挑选与生物、医学、微生物研究相关的统计学分析内容进行讲述。根据PAST内各项分析的标签分类,将该教程具体设置如下:PAST软件介绍PAST的基本信息数据的输入和修改数据的转换和标准化图像绘制 (Plot标签)点线图和直方图散点图条形图和箱须图饼图堆叠条形图三元相图气泡图单变量统计学分析 (Univariate标...

weixin_39605706的博客 3155

YOLOv11改进 ,YOLOv11改进主干网络为MobileNetV3,助力涨点

MobileNetV3通过结合硬件感知网络架构搜索(NAS)和NetAdapt算法,通过新颖的架构改进进一步提升了性能。本文开始探讨了自动化搜索算法与网络设计如何协同工作,以利用互补方法来提升整体技术水平。通过这一过程,创建了两个新的MobileNet模型:MobileNetV3-Large和MobileNetV3-Small,分别针对高资源和低资源使用场景。这些模型随后被适配并应用于目标检测和语义分割任务。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1933

洛谷P1015 回文数

题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。 例如:给定一个十进制数5656,将5656加6565(即把5656从右向左读),得到121121是一个回文数。 又如:对于十进制数8787: STEP1:87+78=16587+78=165 STEP2:165+561=726165+561=726 STEP3:726+627=1353726+627=1353 STEP4:1353+3531=48841353+3531=4884 在这里的一步是...

lzx_xzl_______的博客 617

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

P1015 [NOIP1999 普及组] 回文数

写一个程序,给定一个 N(2≤N≤10 或 N=16)进制数 M(100 位之内),求最少经过几步可以得到回文数。如果在 30 步以内(包含 30 步)不可能得到回文数,则输出。例如:给定一个十进制数 56,将 56 加 65(即把 56 从右向左读),得到 121 是一个回文数。在这里的一步是指进行了一次 N 进制的加法,上例最少用了 4 步得到回文数 4884。若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。如果能在 30 步以内得到回文数,输出格式形如。

2301_80979254的博客 667

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Vijos 1304题:回文数

若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。

叶琼州的代码小窝 5833

洛谷_P1015 [NOIP1999 普及组] 回文数 java_高精度计算

题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。 分析 此题将给定的进制数,通过BigInteger这个构造器,先转化为10进制,然后将反转后的数和原数进行高精度的相加add方法;然后通过toString方法,通过指定参数来转为原来的n进制,用一个check方法去判断,和数是否为回文数; 高精度计算的有关类:BigInteger,参考地址, StringBuffer可以通过reverse方法对字符串直接进行反转,但需要注意他调用方法后,对其本身就直接反转了; i

与其邻渊羡渔,不如退而结网 715

回文数二

题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。 例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数。 又如:对于10进制数87: STEP1:87+78 = 165         STEP2:165+561 = 726 STEP3:726+627 = 1353        STEP4:1353+3531 = 488...

双鱼座boyy的博客 1262

1618: [蓝桥杯][算法训练VIP]回文数

若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。 例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数。 又如:对于10进制数87: STEP1:87+78 = 165 STEP2:165+561 = 726 STEP3:726+627 = 1353 STEP4:1353+3531 = 4884 在这里的一步是指进...

qq_42447386的博客 571

【蓝桥杯】 算法训练 回文数

问题描述   若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。   例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数   又如:对于10进制数87:   STEP1STEP1STEP1:87+78 = 165 STEP2STEP2STEP2:165+561 = 726   STEP3STEP3STEP3:726+627 = 13...

小二笙的博客 1449

回文数(N进制)

题目 若一个数(首位不为零)从左至右读从右至左读都一样,则称为回文数。 现在提出一个理论,n进制的加法,需要通过几次相加才能得到回文数,如果再30步以内不能得到回文数,则输出-1; 输出格式: 两行,N与M 输出格式: 直接输出步数 #include <bits/stdc++.h> using namespace std; string ss; string to_string(int m); int addtion(int N,int m); bool match(string str);

niko02的博客 1147
下一篇: 添加好友(快速幂取模)
WaveBridge
博客等级 码龄10年 8粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值