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

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

【题目描述】

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

因为是回文数,最高位就和最低位上的数相同,所以在做加法时(从右向左)即反转,可以

直接把数最高位定在串的后面就行

#include<bits/stdc++.h>
using namespace std;
int a[10005],b[10005],j;
char c[1005];
int k;//长度用全局变量
int huiwen(int a[],int t)//判断回文数
{int i,j;for(i=0;i<t;i++)//t是串的长度 if((a[i])!=(a[t-1-i]))//前后全判断了 return 0;return 1;
}
void add1(int *q,int n)//加一次,数位是反转的
{for(int i=0;i<n;i++)//把a反转放在b串中 b[n-1-i]=*(q+i);for(int i=0;i<n;i++)//把a,b相应数位相加 *(q+i)+=b[i];for(int i=0;i<n;i++)//用进制除,高位进,低位取模 因为是反转的数位,可把0看作个位了(因为是回文,最高位也得等于最低位) {*(q+i+1)+=*(q+i)/j;*(q+i)=*(q+i)%j;}if(*(q+n)>0)//最后,如果还有进位,长度加1 k++;
}
int main()
{int i;scanf("%d",&j);// 进制 scanf("%s",c);//数,字串形式 k=strlen(c);//求出长度 for(i=0;i<k;i++){    //转换为整形的串 a[i]=c[i];if(a[i]>='0'&&a[i]<='9')//对于那么小于等于9的数 a[i]-='0';else//如果是10进制以上的到16进制的数时 a[i]=a[i]-'A'+10;//就有10几来表示 }if(huiwen(a,k))//如果本身就是回文数 {printf("0");return 0;}i=0;while(i<=30)//做30次的计算 {i++;add1(a,k);//做一次加法计算 if(huiwen(a,k))//是回文数,输出 {printf("%d",i);return 0;}   }printf("Impossible");//30次后还不是回文数 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 提交数: 16625 通过数: 6788 [题目描述] 若一个数(首位不为零)从左向右读与从 ...

  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. 清华唐杰:GPT-3表示能力已经接近人类了
  2. DeepMind发布最新《神经网络中持续学习》综述论文!
  3. [导入]TreeView的级联选择(上)
  4. 最大化窗口设置_BetterTouchTool的几个实用设置
  5. /dev/null 21 的作用
  6. WPF自定义控件与样式(1)-矢量字体图标(iconfont)
  7. 深入理解K8S网络原理下
  8. 警方通报6少年深夜洗劫小米专卖店
  9. 面试者为何从来得不到反馈?
  10. 黑马博客——详细步骤(十二)项目功能的实现之文章评论和退出功能
  11. 【Java中的网络编程】
  12. 兼容所有浏览器的快速Web打印控件下载
  13. 技术领先的FUP TB3M台式大容量低速离心机
  14. macbook air恢复出厂设置
  15. python网络渗透入门_利用Python进行Web渗透测试(四):HTTP协议基础
  16. layui数据表格自定义数据项
  17. RxJava过滤操作符
  18. 你嗑的瓜子要涨价啦?域名你“嗑”懂了吗?
  19. matlab中S-function的概念及使用
  20. mysql数据库连接失败_mysql数据库连接失败问题排查

热门文章

  1. SVN认证失败及“在其上下文中,该请求地址无效”问题的解决方法
  2. [UESTC 1061]秋实大哥与战争
  3. python实现元胞自动机——超简单的流言模型
  4. 让自己不烦心的心理暗示
  5. Flask 教程 第十三章:国际化和本地化 1
  6. new RegExp
  7. 文件上传漏洞之——远程文件包含漏洞(RFI)
  8. 基于MFC的桌面时钟应用程序
  9. java大作业开题报告_c++大作业选题报告.docx
  10. oracle增加表空间大小