问题描述

若一个数(首位不为零)从左往右读与从右往左读都是一样,,我们就将其称之为回文数。例如:给定一个10进制数56,将56加65(即把56从右往左读),得到121是一个回文数。又如,对于十进制数87,step1:87+78=165step2:165+561=726step3:726+627=1353step4:1353+3531=4884在这里的一步是指进行了一次n进制的加法,上例最少用了4步得到回文数4884.写一个程序,给定一个n(2<n<=10或n=16)进制数m。求最少经过几步可以得到回文数。如果在30步以内(包含30步)不可能得到回文数,则输出“impossible”。

【输入样例】

9 87

【输出样例】

6

【算法分析】

n进制运算
1.当前位规范有10%改为n%
2.进位处理由/10改为/n
3.其他运算规则不变

【参考代码】

#include <iostream>
#include <cstring>
using namespace std;
int n,a[101],b[101],ans,i;
void init (int a[])
{//将数串s转化为整数数组astring s;cin>>n>>s;//读入字符串smemset(a,0,sizeof(a));//数组a清零a[0]=s.length();//用a[0]计算字符串s的位数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[])
{//判别整数数组a是否为回文数for(i=1;i<=a[0];i++){if(a[i]!=a[a[0]-i+1])return false;}return true;
}
void jia(int a[])
{//整数数组a与其反序数b进行n进制加法运算int i,k;for(i=1;i<=a[0];i++){//反序数bb[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的位数(a+b最多只能进一位)a[0]++;}
}
int main ()
{init(a);if(check(a)){cout<<0<<endl;return 0;}ans=0;//步数初始化为0while(ans<=30){ans++;jia(a);if(check(a)){cout<<ans<<endl;return 0;}}cout<<"impossible";return 0;
}

《信息学奥赛一本通》回文数(Noip 1999)相关推荐

  1. 信息学奥赛c++ 回文字符串 正解

    题目描述 输入一段字符串(字符个数<=300),判断该字符串是否为回文字符串. 所谓的回文字符串是指类似于"ABCCBA","WTW"这样的中心对称的字符 ...

  2. 信息学奥赛一本通 1095:数1的个数 | OpenJudge NOI 1.5 40

    [题目链接] ybt 1095:数1的个数 OpenJudge NOI 1.5 40:数1的个数 [题目考点] 1. 分离整数的各位数字 对于数字a,a%10可以取到其个位,a/=10(整除)可以去掉 ...

  3. 信息学奥赛一本通1095:数1的个数 AC——王曙翰

    1095:数1的个数 [题目描述] 给定一个十进制正整数n(1≤n≤10000)n(1≤n≤10000),写下从11到nn的所有整数,然后数一下其中出现的数字"1"的个数. 例如当 ...

  4. 信息学奥赛一本通 1309:【例1.6】回文数(Noip1999) | 洛谷 P1015 [NOIP1999 普及组] 回文数

    [题目链接] ybt 1309:[例1.6]回文数(Noip1999) 洛谷 P1015 [NOIP1999 普及组] 回文数 注:两OJ上的问题考察内容相同,但输出要求不同 [题目考点] 1.高精度 ...

  5. 信息学奥赛一本通(1408:素数回文数的个数)

    1408:素数回文数的个数 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 14465     通过数: 9201 [题目描述] 求11到n之间(包括n),既是素数 ...

  6. 回文数(信息学奥赛一本通-T1309)

    [题目描述] 若一个数(首位不为零)从左向右读与从右向左读都是一样,我们就将其称之为回文数.例如:给定一个 10进制数 56,将 56加 65(即把56从右向左读),得到 121是一个回文数.又如,对 ...

  7. 素数回文数的个数(信息学奥赛一本通-T1408)

    [题目描述] 求11到n之间(包括n),既是素数又是回文数的整数有多少个. [输入] 一个大于11小于1000的整数n. [输出] 11到n之间的素数回文数个数. [输入样例] 23 [输出样例] 1 ...

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

    1309:[例1.6]回文数(Noip1999) 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 18537     通过数: 7673 [题目描述] 若一个数(首 ...

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

    1309:[例1.6]回文数(Noip1999) 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 16625 通过数: 6788 [题目描述] 若一个数(首位不为零)从左向右读与从 ...

最新文章

  1. 基于hsv的亮度调整算法_基于手绘工程图离线识别的预处理研究精品论文推荐
  2. Python3 使用推导式统计字符出现次数
  3. 使用Redis实现分布式锁
  4. 无模型自适应迭代学习控制原理和matlab代码仿真学习记录
  5. Java基础:Collections集合、Map集合综合案例 —— 斗地主
  6. iOS简单的登陆界面代码
  7. 【专项测试】京东“安全测试”
  8. 工业控制计算机固态硬盘,工业级固态硬盘的标准有哪几类
  9. 微信公众号Token验证 signature验证
  10. 在你的时区里,一切准时-很美的英文诗
  11. nvme固态硬盘开机慢_别让谣言害了你!关于固态硬盘的谣言以及使用误区 NVMe固态硬盘卡慢怎么办 NVMe固态硬盘卡慢解决方法【详解】-宝商在线...
  12. 面试官:知道你的接口QPS是多少么?
  13. K-SVD: An Algorithm for Designing Overcomplete Dictionaries for Sparse Representation
  14. 期货、股票行情、交易源码
  15. .pkl文件是什么?python
  16. python2.7安装 scipy
  17. java calendar 设置时区_设置calendar时区
  18. python编程要懂英语吗_初中毕业没有英语基础能学编程吗?该学C还是Python?
  19. UE4 扩展详细信息面板
  20. 学习笔记(07):Java小白修炼手册-基础语法:从零开始学Java(二)

热门文章

  1. 从零开始Bootstrap3
  2. 免费的SEO工具软件大全
  3. asp.net mvc 正常支持Fckeditor编辑器
  4. 室外建筑表现3Dmax和vray常用材质参数设置
  5. 在使用Asp.net制作网站的时候遇到的问题(二)
  6. 最好的船_“船”说中的美丽陶瓷
  7. merge规则 python_30个Python极简代码,10分钟get常用技巧
  8. cropper.js 图像旋转问题_快速提高前端开发效率:10个JavaScript图像处理库
  9. 课程设计---约瑟夫环
  10. 第六章 SpringCloud之Ribbon负载均衡