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

时间限制: 1000 ms 内存限制: 65536 KB
提交数: 16625 通过数: 6788

【题目描述】

若一个数(首位不为零)从左向右读与从右向左读都是一样,我们就将其称之为回文数。例如:给定一个 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

【算法分析】

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转化为整数数组a
{memset(a,0,sizeof(a)); //数组a清零 string s;               //读入字符串s cin>>n>>s;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';elsea[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++) b[i]=a[a[0]-i+1];    //反序数b 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]++;                  //修正新的a的位数(a+b最多只能进一位)
}
int main()
{init(a);if(check(a)) {cout<<0;return 0;}ans=0;              //步数初始化为0 while(ans<=30){ans++;jia(a);if(check(a)) {cout<<ans;return 0;}}cout<<"Impossible";    //输出无解信息 return 0;
}

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

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

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

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

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

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

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

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

    1309:[例1.6]回文数(Noip1999) 时间限制: 1000 ms         内存限制: 65536 KB [题目描述] 若一个数(首位不为零)从左向右读与从右向左读都是一样,我们就将 ...

  5. 1309 【例1.6】回文数(Noip1999)

    #include <cstdio> #include <cstring> #include <iostream> using namespace std; int ...

  6. C语言经典例30-判断回文数

    目录 1 题目 2 分析 3 实现 4 运行结果 1 题目 一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同. 2 分析 本题的思路是把这个数分解重新组成一个数,分 ...

  7. 信息学奥赛一本通 1094:与7无关的数 | OpenJudge NOI 1.5 39

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

  8. 信息学奥赛一本通(1244:和为给定数)

    1244:和为给定数 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 8206     通过数: 3053 [题目描述] 给出若干个整数,询问其中是否有一对数的和等 ...

  9. 信息学奥赛一本通(1066:满足条件的数累加)

    1066:满足条件的数累加 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 38204     通过数: 31096 [题目描述] 将正整数mm和nn之间(包括mm ...

最新文章

  1. k8s使用kube-router网络插件并监控流量状态
  2. vue ts 监听路由改变
  3. vue2.0 vue-cli项目中路由之间的参数传递
  4. Python爬虫大杀器之Requests快速入门
  5. hdu 4414 Finding crosses
  6. 量子传输技术转移一个人需要4500万亿年
  7. 地形图如何转换为数字高程模型(DEM)
  8. vue.js:634 [Vue warn]: Error in render: “TypeError: Cannot read property ‘matched‘ of undefined“
  9. CSS3--box-shadow
  10. 1078. Bigram 分词
  11. 【SQL】字符型函数
  12. OPENCV中滑动条的使用
  13. 【转载】CMMI与敏捷开发模式比较
  14. java 如何查看文件编码_java判断文件编码 终于弄懂了编码是怎么回事
  15. matlab插值表,[转载]matlab插值介绍
  16. 使用Mob工具实现QQ、微信、新浪微博登录
  17. PS怎么把模糊的照片,变得更加清晰
  18. MySQL中的子查询(第八章)
  19. Redhat/Selinux上mysql启动报错Operating system error number 13的解决方法
  20. 激光打印机的粉盒装粉

热门文章

  1. IT程序员的常见病:颈椎病、肩周炎 .
  2. 机器学习_深度学习毕设题目汇总——行人
  3. 连接9100端口,打印机实现远程连接打印
  4. hive取当前周的周一
  5. 目标检测:各种网络结构对比
  6. 王者qq服务器能和微信一起吗,王者荣耀微信和qq能一起玩吗 qq和微信数据互通吗...
  7. 计算机启动显示不正确的分区表,每次开机提示invalid partition table怎么解决?
  8. Docker容器搭建conpot蜜罐
  9. 推荐系统(一)基于协同过滤算法开发离线推荐
  10. 1N4148、1N5819、1N4007的区别