如果一个数字从左边读和从右边读一样,那么这个数字就是一个回文数。例如32123就是一个回文数;17在某种意义上也是一个回文数,因为它的二进制型式——10001——是一个回文数。 请你帮忙开发一个程序,判断一个数n在任意进制(2-16)下是否有回文数。 输入描述: 输入包含多组数据。每组数据包括一个正整数n (1≤n 输出描述: 对应每组数据,如果n在2-16进制下存在回文数,则输出“Yes”;否则输出“No”。 输入例子: 3212317 输出例子: YesYes
#include
#include
#include
using namespace std;
bool check(string s){
if(s.size()<=1) return true;
for(int i=0;i if(s[i]!=s[s.size()-i-1]) return false; } return true; } string tran(int n,int m){ string ret; int t; while(n!=0){ t=n%m; n/=m; if(t<10){ ret+=(t+'0'); } else{ ret+=(t-10+'A'); } } reverse(ret.begin(),ret.end()); return ret; } void fun(int n){ bool flag=false; for(int i=2;i<=16;i++){ if((flag=check(tran(n,i)))==true) break; } if(flag) cout<<"Yes"< else cout<<"No"< } int main(){ int n; while(cin>>n){ fun(n); } return 0; }