题目大意:
给出两个整数n、b,问十进制整数n在b进制下是否是回文数,若是,则输出Yes;否则,输出No.在此之后输出n在b进制下的表示。
算法思路:
先将整数N转化为b进制数,然后判断该数字是否为回文数,最后输出结果即可。
将十进制数N转化为b进制数方法:
vector<int> r;//保存N的b进制数的每一位
while(N!=0){
r.push_back(N%b);
N /= b;
}
判断该数字是否为回文数方法:
for(int i=0;i<r.size()/2;++i){
if(r[i]!=r[r.size()-1-i]){
isPalindromic = false;
}
}
注意点:
1、最后输出该数字的时候得倒序输出
提交结果:
AC代码:
#include<cstdio>
#include<vector>
using namespace std;
int main(){
int N,b;
scanf("%d %d",&N,&b);
//将N转化为b进制数
vector<int> r;//保存N的b进制数的每一位
while(N!=0){
r.push_back(N%b);
N /= b;
}
bool isPalindromic = true;
// 判断是否为回文数
for(int i=0;i<r.size()/2;++i){
if(r[i]!=r[r.size()-1-i]){
isPalindromic = false;
}
}
if(isPalindromic){
printf("Yes\n");
}else{
printf("No\n");
}
//输出该数字
for(int i=r.size()-1;i>=0;--i){
printf("%d",r[i]);
if(i>0) printf(" ");
}
return 0;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。