1309:【例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” 。
【输入】
给定一个N(2<N<=10或N=16)进制数M。
【输出】
最少几步。如果在30步以内(包含30步)不可能得到回文数,则输出“Impossible”。
【输入样例】
9 87
【输出样例】
6
【来源】
No
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int a[101],b[101],n,ans,i;
void init(int a[]){//读取字符串并逆序转换为数组 string s;cin>>n>>s;memset(a,0,sizeof(a));a[0]=s.length();for(i=1;i<=a[0];i++)if(s[a[0]-i]>='0'&&s[a[0]-i]<='9') a[i]=s[a[0]-i]-'0';else a[i]=s[a[0]-i]-'A'+10;
}
bool check(int a[]){//判断是否回文数 for(i=1;i<=a[0];i++)if(a[i]!=a[a[0]-i+1]) return false;return true;
}
void jia(int a[]){//加法运算函数 int i,k;for(i=1;i<=a[0];i++) b[i]=a[a[0]-i+1];//逆序存储 for(i=1;i<=a[0];i++) a[i]+=b[i];//按位求和 for(i=1;i<=a[0];i++){//进位处理 a[i+1]+=+a[i]/n;a[i]%=n;}if(a[a[0]+1]>0) a[0]++;//修正长度
}
int main()
{init(a);if(check(a)){cout<<0<<endl;return 0;}ans=0;while(ans<=30){ans++;jia(a);if(check(a)){cout<<ans<<endl;return 0;}}cout<<"Impossible";return 0;}
1309:【例1.6】回文数(Noip1999)相关推荐
- 信息学奥赛一本通 1309:【例1.6】回文数(Noip1999) | 洛谷 P1015 [NOIP1999 普及组] 回文数
[题目链接] ybt 1309:[例1.6]回文数(Noip1999) 洛谷 P1015 [NOIP1999 普及组] 回文数 注:两OJ上的问题考察内容相同,但输出要求不同 [题目考点] 1.高精度 ...
- 信息学奥赛一本通:1309:【例1.6】回文数(Noip1999)
1309:[例1.6]回文数(Noip1999) 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 18537 通过数: 7673 [题目描述] 若一个数(首 ...
- 信息学奥赛一本通|1309:【例1.6】回文数(Noip1999)
1309:[例1.6]回文数(Noip1999) 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 16625 通过数: 6788 [题目描述] 若一个数(首位不为零)从左向右读与从 ...
- 1309 【例1.6】回文数(Noip1999)
#include <cstdio> #include <cstring> #include <iostream> using namespace std; int ...
- C语言经典例30-判断回文数
目录 1 题目 2 分析 3 实现 4 运行结果 1 题目 一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同. 2 分析 本题的思路是把这个数分解重新组成一个数,分 ...
- python回文数编程_GitHub - Fantasy2Me/PythonExercise: Python 编程练习题 100 例(源码),实例在 Python 3.6 环境下测试通过。...
Python3 练习题 100例 有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的 ...
- P1015 [NOIP1999 普及组] 回文数 C语言实现
最近在做洛谷的一道回文数的题目时卡住了,但由于笔者只学习了C语言,于是想找一篇C语言写的博客学习一下.但无奈的是大多为C++或Python等语言,而且注释太少,用C++写的有的博客全局变量使用的太多, ...
- 洛谷 [NOIP1999 普及组] 回文数
文章目录 目录 文章目录 题目 一.基本思路 二.相关代码 1.判断是否是回文数 2.字符串的初始化 3.反转 4.反转相加 三.总 题目 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将 ...
- 【NOIP1999】【Luogu1015】回文数(高精度,模拟)
problem 给定一个n进制的数m 每次进行如下操作:反转(比如把56变成65)后两数相加,得新数. 求最少经过几步可以得到新数为回文数,超过30步输出Impossible! solution 判断 ...
最新文章
- Linux下新增的代码放哪儿,linux – 如何在QEMU源代码中添加新设备?
- 11、1.4.3 测试JDK安装成功
- 阿里帝国到底有多庞大
- Android 常见错误
- template might not exist or might not be accessible by any of the configured
- 企业即时通讯最可见的价值是效率和成本
- Tensorflow 学习笔记 vs code 的用户配置
- 快速失败(fail-fast)和安全失败(fail-safe)的区别是什么?
- ldd3笔记_3_编译模块【ZT】
- WCF的优势和性能测试
- 明天(20171017)继续学习阅读的文章
- 软件质量保证与测试(秦航第二版)第一章软件质量和测试的背景
- oracle登录卡,【Oracle连接问题】关于windows xp3上oracle连接登录卡住的问题
- CorelDRAW暗角效果怎么做?
- 金蝶BOS 插件数据填充
- Depsolving loop limit reached
- java计算机毕业设计喜枫日料店自助点餐系统源码+系统+数据库+lw文档+mybatis+运行部署
- Chrome浏览器内置翻译功能突然失效(自动翻译失败)解决方案
- 2021年中国光谱分析仪器市场趋势报告、技术动态创新及2027年市场预测
- Java 生成6位纯数字验证码 发短信验证码处使用
热门文章
- 成都五月花计算机专业学校单招,成都五月花高级技工学校这所单招学校如何
- 服务注册与发现(中)
- Linux上安装git
- python做一个考试系统_python考试系统 相关实例(示例源码)下载 - 好例子网
- 当高铁遇到地面沉降 如何测量 怎么应对(转载)
- ubuntu 编译 找不到 -ly
- [转帖]AMOLED的技术和OLED有哪些联系和区别
- linux+4t分区+扩容lvm,Linux中利用LVM实现分区动态扩容
- Nextcloud集成Active Directory(AD)LDAP用户身份验证
- Java继承与多态(抽象类和接口练习)定义抽象类Bank,它包含oneyearRate(一年定期利率)oneyearNationalbebt(一年国债利率)和CurrentDepositRate(按年