折磨人的回文数

news2024/11/27 8:22:42

题目:

描述

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

例如:给定一个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(100位之内),求最少经过几步可以得到回文数。如果在30步以内(包含30步)不可能得到回文数,则输出“Impossible!”

进制N>10时,使用大写'A'字母表示10,'B'表示11,...,'E'表示15

输入描述:

两行,分别为N,M

输出描述:

STEP=ans

示例1

输入:

9
87

输出:

STEP=6

思路:

这段代码的主要思路是通过循环迭代来判断一个数是否是回文数。具体的步骤如下:

  1. 首先,程序读入一个进制数 n 和一个字符数组 crr
  2. 然后,通过函数 func_crr_to_arr 将字符数组转换为整数数组 arr,并统计数组的长度。
  3. 接下来,进入一个循环,每次循环都判断整数数组 arr 是否是回文数(即正序和逆序相同)。
    • 如果是回文数,跳出循环。
    • 如果不是回文数,调用函数 func_get_arr_reserve 获取 arr 的逆序存储在 arr_r 中。
    • 然后调用函数 func_arr_reset 对 arr 进行处理,使其加上逆序后仍然满足进制要求。
    • 循环的次数由变量 step 记录,并在每次循环后递增。
    • 如果超过30步还没有得到回文数,则输出 "Impossible!"。
  4. 最后,根据 step 的值输出结果。

总的来说,该代码通过迭代判断和处理整数数组,直到得到回文数或超过30步为止。这种方法可以用于解决回文数问题。

代码:

#include <stdio.h>

int n;
int arr[20] = {0}, arr_r[20] = {0};
char crr[10] = {0};
int lenght = 0;

// 将字符数组转换为整数数组
void func_crr_to_arr()
{
    for(lenght = 1; crr[lenght-1] != 0 ; lenght++)
    {
        if(crr[lenght-1] >= '0' && crr[lenght-1] <= '9')        arr[lenght] = crr[lenght-1] - '0';
        else if(crr[lenght-1] >= 'A' && crr[lenght-1] <= 'F')   arr[lenght] = crr[lenght-1] - 'A' + 10;
    }
    lenght -= 1;
}

// 判断整数数组是否是回文数
int func_arr_palindrome_judge()
{
    for(int i = 1; i <= lenght ; i++)
    {
        if(arr[i] != arr[lenght - i + 1])
            return 0;
    }
    return 1;
}

// 获取整数数组的逆序
void func_get_arr_reserve()
{
    for(int i = 1; i <= lenght ; i++)
    {
        arr_r[i] = arr[lenght - i + 1];
    }
}

// 对整数数组进行处理,使其加上逆序后仍然满足进制要求
void func_arr_reset()
{
    for(int i = lenght; i > 0; i--)
    {
        if((arr[i] + arr_r[i]) / n != 0 )
        {
            arr[i - 1] ++;
            arr[i] = arr[i] + arr_r[i] - n;
        }
        else
        {
            arr[i] = arr[i] + arr_r[i];
        }
    }
    if(arr[0] != 0)
    {
        for(int i = lenght; i >= 0; i--)
        {
            arr[i + 1] = arr[i];
        }
        arr[0] = 0;
        lenght ++;
    }
}

int main()
{
    int step = 0;

    scanf("%d", &n);
    scanf("%s", crr);
    func_crr_to_arr();

    // 循环处理整数数组,直到得到回文数或超过30步
    while(!func_arr_palindrome_judge())
    {
        func_get_arr_reserve();
        func_arr_reset();
        step ++;
        if(step >= 30)break;
    }
    
    // 输出结果:回文数所需要的步数或提示不可能得到回文数
    if(step >= 30)printf("Impossible!");
    else printf("STEP=%d", step);
    
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1342507.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

idea的pom.xml文件灰色删除线解决办法

以上是点击了移除module后就变成这样 如果再次对着已移除的module右键会发现有个delete&#xff0c;点击这个是真删了&#xff0c;要谨慎备份哦 解决方案&#xff1a;恢复误操作remove module的解决方法 idea最右边&#xff0c;有个Maven控件&#xff0c;找到要恢复的module&a…

【C语言深度剖析——第一节(关键字1)】《C语言深度解剖》+蛋哥分析+个人理解

你未曾见过火光&#xff0c;难怪甘愿漂泊寒夜 本文由睡觉待开机原创&#xff0c;未经允许不得转载。 本内容在csdn网站首发 欢迎各位点赞—评论—收藏 如果存在不足之处请评论留言&#xff0c;共同进步&#xff01; 首先简单介绍一下《C语言深度解剖》&#xff1a; 全书特点&am…

亚信安慧AntDB MTK数据同步工具之数据稽核

数据稽核是一种用于确保表数据准确性和一致性的重要方法&#xff0c;它涉及到检查数据的完整性、致性、有效性和合法性&#xff0c;以及与预期规范的匹配程度等多个方面。随着大数据时代的到来&#xff0c;通过有效的数据稽核&#xff0c;组织可以提高决策的准确性和效率&#…

【产品应用】一体化步进伺服电机在自动稀释仪中的应用

在许多化学实验和生物实验中&#xff0c;稀释是一个关键步骤。为了提高稀释的准确性和效率&#xff0c;自动稀释仪被广泛使用。随着科技的进步&#xff0c;一体化步进伺服电机在自动稀释仪中的应用越来越广泛&#xff0c;大大提高了仪器的性能和效率。本文将详细介绍一体化步进…

2024年起重机司机(限桥式起重机)证考试题库及起重机司机(限桥式起重机)试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年起重机司机(限桥式起重机)证考试题库及起重机司机(限桥式起重机)试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作…

网页设计期末 建筑博物馆首页 HTML+CSS+js 完整代码(轮播图+瀑布流)

文章目录 前言&#xff1a;完整代码在总结处跳转&#xff01;&#xff01;&#xff01; 描述&#xff1a;结果展示&#xff1a;部分代码演示&#xff1a;&#xff08;完整代码在总结处跳转&#xff09;总结&#xff1a;&#xff08;完整代码在此处跳转&#xff09; 前言&#x…

ELK----filebeat日志收集工具

ELK&#xff1a;filebeat日志收集工具和logstash相同 filebeat是一个轻量级的日志收集工具&#xff0c;所使用的系统资源比logstash部署和启动时使用的资源要小的多。 filebeat可以运行在非java环境。他可以代理logstash在非java环境上收集日志 filebeat无法实现数据的过滤&…

查看IOS游戏FPS

摘要 本篇技术博客将介绍如何使用克魔助手工具来查看iOS游戏的帧率&#xff08;FPS&#xff09;。通过克魔助手&#xff0c;开发者可以轻松监测游戏性能&#xff0c;以提升用户体验和游戏质量。 引言 在iOS游戏开发过程中&#xff0c;了解游戏的帧率对于优化游戏性能至关重要…

顶配版SAM:由分割一切迈向感知一切

文章目录 0. 前言1. 论文地址1.1 项目&代码1.2 模型地址1.3 Demo 2. 模型介绍2.1 亮点2.2 方法 3. 量化结果、可视化展示Reference 0. 前言 现有的视觉分割基础模型&#xff0c;如 SAM 及其变体&#xff0c;集中优势在形状、边缘等初级定位感知&#xff0c;或依赖外部模型…

MR实战:实现数据去重

文章目录 一、实战概述二、提出任务三、完成任务&#xff08;一&#xff09;准备数据文件1、在虚拟机上创建文本文件2、上传文件到HDFS指定目录 &#xff08;二&#xff09;实现步骤1、Map阶段实现&#xff08;1&#xff09;创建Maven项目&#xff08;2&#xff09;添加相关依赖…

红警1源代码下载,编译,单步调试操作步骤

注意视频无声音&#xff1a; 红警1代码单步调试操作步骤_哔哩哔哩_bilibili红警1&#xff0c;源代码下载&#xff0c;编译&#xff0c;单步调试操作步骤。1、下载代码&#xff1a;https://gitee.com/r77683962/CnC_Remastered_Collection/repository/archive/master.zip这里边…

Jackson ImmunoResearch纳米二抗(Nano Secondary Antibodies)

驼科&#xff0c;如羊驼和美洲驼&#xff0c;会产生一类独特的仅由重链组成的抗体。而抗原结合片段(Fab)&#xff0c;也称为仅可变重链片段抗体(Variable Heavy-Chain only fragment antibodies&#xff0c;VHH片段)&#xff0c;或纳米抗体&#xff0c;是一种新型抗体形式。凭借…

【MCAL】TC397+EB-tresos之MCU配置实战 - 芯片时钟

本篇文章介绍了在TC397平台使用EB-treso对MCU驱动模块进行配置的实战过程&#xff0c;主要介绍了后续基本每个外设模块都要涉及的芯片时钟部分&#xff0c;帮助读者了解TC397芯片的时钟树结构&#xff0c;在后续计算配置不同外设模块诸如通信速率&#xff0c;定时器周期等&…

rabbitmq使用总结

1、进入rabbitmq的sbin目录&#xff0c;进入CMD 2、输入./rabbitmq-plugins enable rabbitmq_management启用管理服务。 3、输入./rabbitmqctl start_app启动服务。 查看是否启动成功 1、浏览器访问http://localhost:15672/ 下载erlang 地址如下&#xff1a; http://erla…

三张表看懂POE POE+ POE++ 三个协议的相关参数

Hqst华强盛&#xff08;盈盛电子&#xff09;导读&#xff1a;三张表看懂POE POE POE 三个协议的相关参数。 一 ̖ POE协议区分&#xff1a; 802.3af&#xff08;PoE) 百兆网络变压器H81621S 二 ̖ POE协议与受电设备&#xff08;PD&#xff09;工作功率分级 802.3at&#xf…

使用MySQL进行数据库表的基本操作

参考文章 http://www.ksqn.cn/news/1325.html 1. 创建表 语法&#xff1a; CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎;说明&#xff1a; field 表示列名datatype 表示列的类…

图片水印怎么去除?推荐三个去水印的方法

在我们搜集和整理图片素材的过程中&#xff0c;总会遇到一个让人头疼的问题——水印。这些水印不仅破坏了图片的整体美感&#xff0c;还极大地限制了图片的使用范围。然而&#xff0c;好消息是&#xff0c;我们并非束手无策&#xff0c;有多种方法可以帮助我们去除这些水印&…

Android 理解Context

文章目录 Android 理解ContextContext是什么Activity能直接new吗&#xff1f; Context结构和源码一个程序有几个ContextContext的作用Context作用域获取ContextgetApplication()和getApplicationContext()区别Context引起的内存泄露错误的单例模式View持有Activity应用正确使用…

OpenCV-Python(29):图像特征

目录 目标 背景介绍 常用特征 应用场景 目标 理解什么是图像特征 为什么图像特征很重要 为什么角点很重要 背景介绍 相信大多数人都玩过拼图游戏吧。首先你们拿到一张图片的一堆碎片&#xff0c;你要做的就是把这些碎片以正确的方式排列起来从而重建这幅图像。问题是&…

模拟电路基础知识笔记,你想知道的都有,建议收藏!

大家总说模电知识总是学不会&#xff0c;IC修真院为大家整理了模拟电子基础知识&#xff0c;看看你掌握了多少&#xff0c;文末可以获取全部哦。 文末可领全部文档 1、PN结是晶体二极管的基本结构&#xff0c;也是一般半导体器件的核心。 2、 射极输出器没有电压放大能力&am…