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