信息学奥赛一本通:1309:【例1.6】回文数(Noip1999)
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)相关推荐
- 信息学奥赛一本通(1408:素数回文数的个数)
1408:素数回文数的个数 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 14465 通过数: 9201 [题目描述] 求11到n之间(包括n),既是素数 ...
- 信息学奥赛一本通 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 提交数: 16625 通过数: 6788 [题目描述] 若一个数(首位不为零)从左向右读与从 ...
- 1309:【例1.6】回文数(Noip1999)
1309:[例1.6]回文数(Noip1999) 时间限制: 1000 ms 内存限制: 65536 KB [题目描述] 若一个数(首位不为零)从左向右读与从右向左读都是一样,我们就将 ...
- 1309 【例1.6】回文数(Noip1999)
#include <cstdio> #include <cstring> #include <iostream> using namespace std; int ...
- C语言经典例30-判断回文数
目录 1 题目 2 分析 3 实现 4 运行结果 1 题目 一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同. 2 分析 本题的思路是把这个数分解重新组成一个数,分 ...
- 信息学奥赛一本通 1094:与7无关的数 | OpenJudge NOI 1.5 39
[题目链接] ybt 1094:与7无关的数 OpenJudge NOI 1.5 39:与7无关的数 [题目考点] 1. 分离整数的各位数字 对于数字a,a%10可以取到其个位,a/=10(整除)可以 ...
- 信息学奥赛一本通(1244:和为给定数)
1244:和为给定数 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 8206 通过数: 3053 [题目描述] 给出若干个整数,询问其中是否有一对数的和等 ...
- 信息学奥赛一本通(1066:满足条件的数累加)
1066:满足条件的数累加 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 38204 通过数: 31096 [题目描述] 将正整数mm和nn之间(包括mm ...
最新文章
- 清华唐杰:GPT-3表示能力已经接近人类了
- DeepMind发布最新《神经网络中持续学习》综述论文!
- [导入]TreeView的级联选择(上)
- 最大化窗口设置_BetterTouchTool的几个实用设置
- /dev/null 21 的作用
- WPF自定义控件与样式(1)-矢量字体图标(iconfont)
- 深入理解K8S网络原理下
- 警方通报6少年深夜洗劫小米专卖店
- 面试者为何从来得不到反馈?
- 黑马博客——详细步骤(十二)项目功能的实现之文章评论和退出功能
- 【Java中的网络编程】
- 兼容所有浏览器的快速Web打印控件下载
- 技术领先的FUP TB3M台式大容量低速离心机
- macbook air恢复出厂设置
- python网络渗透入门_利用Python进行Web渗透测试(四):HTTP协议基础
- layui数据表格自定义数据项
- RxJava过滤操作符
- 你嗑的瓜子要涨价啦?域名你“嗑”懂了吗?
- matlab中S-function的概念及使用
- mysql数据库连接失败_mysql数据库连接失败问题排查