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