【例1.6】回文数(Noip1999)

1309:【例1.6】回文数(Noip1999)

时间限制: 1000 ms 内存限制: 65536 KB
【题目描述】
若一个数(首位不为零)从左向右读与从右向左读都是一样,我们就将其称之为回文数。例如:给定一个 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.求最少经过几步可以得到回文数。如果在30步以内(包含30步)不可能得到回文数,则输出“Impossible” 。

【输入】
第1行,给定一个N(2<N≤10或N=16)表示进制;

第2行,一个N进制数M。

【输出】
最少几步。如果在30步以内(包含30步)不可能得到回文数,则输出“Impossible”。

【输入样例】
9
87
【输出样例】
6
解析:

  • 输入的数据放到数组,转换为int

    • 如果值在[0,9]之间则直接-‘0’
    • 否则需要-‘A’+10
  • 判断是否为回文

  • 将数组和其逆序相加得到新数组**(逆序相加,数组不需要逆序)**

  • 调用判断回文的函数判断新数组

    • 如果不是则重复上述步骤,新数组需要归零
    • 如果是则直接输出

    多个样例调试:
    【输入】
    16
    AC27
    【输出】
    6
    【输入】
    2
    1001101
    【输出】
    Impossible
    【输入】
    10
    98
    【输出】
    24

#include<bits/stdc++.h>
using namespace std;
int num=0,len_k=0 ,m; 
int Max=200;
int k[200],n0[200],n1[200];//数组只有在全局变量时才会默认为0,且数组长度不能为变量; 
bool plalindrom(int n[],int len){ //回文判断 for(int i=0;i<len;i++){if(n[i]!=n[len-i-1]){return 0;}}return 1;	
}
int change(int n1[],int len,int *k){for(int i=0;i<len;i++){  		//倒置相加 放到k k[i]=n1[i]+n1[len-i-1];}for(int i=0;i<len;i++){ //转化为m进制 (由于是逆序相加,所以最后不需要逆序解决进位问题) if(k[i]>=m){k[i+1]+=k[i]/m;k[i]=k[i]%m; }}//处理最后一位 (加法最多只会增加一位) int len_new=len;if(k[len_new]<m&&k[len_new]!=0){len_new++;}return len_new;
}
int main(){char n[Max];int len; cin>>m>>n;len = strlen(n);for(int i=0;i<len;i++){  //转化为int if(n[i]>='0'&&n[i]<='9'){n1[i]=n[i]-'0';	} else{n1[i] = n[i]-'A'+10; //当进制n大于10需要考虑字母的情况 } 	}int mark;  	//判断是否为回文mark = plalindrom(n1,len); len_k=len; //先给len_k赋值为len while(!mark&&(num<=30)){num++;len_k=change(n1,len_k,k); //开始相加 ,赋值 mark = plalindrom(k,len_k); for(int i=0;i<len_k;i++){ //每一次得到的数组重新倒置后赋给n1,以便没有成为回文时继续调用 n1[i]=k[i];k[i]=0; //由于k数组作为最终加法的值,为了保证数值准确每次加后需要归零 }}if(num<=30) cout<<num<<endl;else cout<<"Impossible";return 0;
}

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

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

相关文章

using meta-SQL 使用元SQL 六

%Table Syntax %Table(recname) Description Use the %Table construct to return the SQL table name for the record specified with recname. 使用%Table构造返回使用recname指定的记录的SQL表名。 This construct can be used to specify temporary tables for runn…

sqlmap400报错问题解决

python sqlmap.py -r sql.txt --batch --techniqueB --tamperspace2comment --risk 3 --force-ssl–batch 选项全部默认 不用再手动输入 –techniqueB 使用布尔盲注&#xff0c;该参数是指出要求使用的注入方式 –tamperspace2comment使用特殊脚本&#xff0c;space2comment是把…

【MySQL语言汇总[DQL,DDL,DCL,DML]以及使用python连接数据库进行其他操作】

MySQL语言汇总[DQL,DDL,DCL,DML] SQL分类1.DDL:操作数据库&#xff0c;表创建 删除 查询 修改对数据库的操作对表的操作复制表&#xff08;重点&#xff09;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 2.DML:增删改表中数据3.DQL&#xff1a;查询表中的记录…

jsp在线辅助教育系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 在线辅助教育系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

工厂生产数据展示基本布局Demo(提供素材)

效果图&#xff1a; <template><div class"app-container"><a-row :span"24"><a-col :span"12"><div class"divBox"><div class"flexBoxs"><div style"margin: 2px 5px;"…

在windows server系统下,快速部署自己的网站

目录 xampp简介xampp的作用xampp的安装方法Apache简介Apache的作用 本文主要介绍使用xampp软件包在windows server系统下&#xff0c;快速部署自己的网站。 xampp简介 XAMPP是一款基于Apache、MySQL、PHP和Perl的开源Web服务器软件包。XAMPP支持多个操作系统&#xff0c;包括W…

go写文件后出现大量NUL字符问题记录

目录 背景 看看修改前 修改后 原因 背景 写文件完成后发现&#xff1a; size明显也和正常的不相等。 看看修改前 buf : make([]byte, 64) buffer : bytes.NewBuffer(buf)// ...其它逻辑使得buffer有值// 打开即将要写入的文件&#xff0c;不存在则创建 f, err : os.Open…

MySQL数据备份

一、逻辑备份 备份的是建表、建库、插入等操作所执行SQL语句&#xff0c;适用于中小型数据库&#xff0c;效率相对较低。 本质&#xff1a;导出的是SQL语句文件 优点&#xff1a;不论是什么存储引擎&#xff0c;都可以用mysqldump备成SQL语句 缺点&#xff1a;速度较慢&…

Mysql分布式集群部署---MySQL集群Cluster将数据分成多个片段,每个片段存储在不同的服务器上

1.1 目的 部署MysqlCluster集群环境 1.2 MySQL集群Cluster原理 1 数据分片 MySQL集群Cluster将数据分成多个片段&#xff0c;每个片段存储在不同的服务器上。这样可以将数据负载分散到多个服务器上&#xff0c;提高系统的性能和可扩展性。 2. 数据同步 MySQL集群Cluster使…

前端面试理论题

1.什么是js&#xff1f;js的特点是什么&#xff1f; js&#xff1a; 是一种直译式脚本语言&#xff0c;是一种动态类型、弱类型、基于原型的高级语言。 特点&#xff1a;简单性&#xff1b;安全性&#xff1b;动态性&#xff1b;跨平台性&#xff1b; 简单性&#xff1a;它的…

ElasticSearch之Close index API

关闭指定的索引。 索引关闭之后&#xff1a; 停止对读、写操作的响应。停止检索操作的响应。在索引关闭前&#xff0c;允许执行的操作&#xff0c;关闭之后均不允许执行。ElasticSearch取消对索引的相关维护操作&#xff0c;包含内存中的数据结构&#xff0c;以及保存在存储中…

c++--运算符重载

1.重载的运算符 (1).重载运算符函数的参数数量与该运算符作用的运算对象数量一样多。 (2).除了重载的函数调用运算符operator()之外&#xff0c;其他重载运算符不能含有默认实参。 (3).对一个重载的运算符&#xff0c;其优先级和结合律与对应的内置运算符保持一致。 (4).当一个…

2022年全国大学生数据分析大赛医药电商销售数据分析求解全过程论文及程序

2022年全国大学生数据分析大赛 医药电商销售数据分析 原题再现&#xff1a; 问题背景   20 世纪 90 年代是电子数据交换时代&#xff0c;中国电子商务开始起步并初见雏形&#xff0c;随后 Web 技术爆炸式成长使电子商务处于蓬勃发展阶段&#xff0c;目前互联网信息碎片化以…

破解研发人员的绩效考核难题

当下的中国正处于产业结构调整的重要转型时期。创新成为当下企业寻求稳健和长远发展必不可少的关键。要建立属于自己的企业特色&#xff0c;开发出属于自己的产品和服务并在激励竞争的市场下求得生存和发展&#xff0c;企业的自主研发活动已经越来越重视。纵观那些世界500强企业…

【Centos】在CentOS上搭建Squid代理服务器详解

在CentOS上搭建Squid代理服务器详解 一、安装 首先&#xff0c;通过yum包管理工具安装Squid代理服务器和httpd-tools&#xff08;用于生成密码文件&#xff09;&#xff1a; yum install squid -y yum install httpd-tools -y二、生成密码文件 创建用于存储用户认证信息的目…

杨辉三角

打印n行杨辉三角&#xff0c;n<10。 输入格式: 直接输入一个小于10的正整数n。 输出格式: 输出n行杨辉三角&#xff0c;每个数据输出占4列。 输入样例: 5输出样例: 11 11 2 11 3 3 11 4 6 4 1代码长度限制 16 KB 时间限制 400 ms 内存限制 6…

css实现正六边形嵌套圆心

要实现一个正六边形嵌套圆心&#xff0c;可以使用CSS的::before和::after伪元素以及border-radius属性。以下是具体的解析和代码&#xff1a; 使用::before和::after伪元素创建正六边形。设置正六边形的背景色。使用border-radius属性使正六边形的内角为60度。在正六边形内部创…

【matlab程序】matlab画子图的多种样式

【matlab程序】matlab画子图的多种样式

js判断是否是搜索引擎(蜘蛛)、爬虫

/*** description 对象$BP&#xff0c;包含三个方法和一个属性*/var $BP {// 第一&#xff1a;通过ua判断是非爬虫/*** description 判断是否为爬虫* returns {boolean} 返回布尔值&#xff0c;true表示不是爬虫&#xff0c;false表示是爬虫*/isBot() {return /bot|googlebot|…

【漏洞复现】速达软件存在任意文件上传

漏洞描述 速达软件全系产品存在任意文件上传漏洞,未经身份认证的攻击者可以通过此漏洞上传恶意后门文件,执行任意指令,造成服务器失陷 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、…