题目粗心:
给出两个整数 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;
}