经典指数          
原因
3322
浏览数
0
收藏数
 

如果一个数字从左边读和从右边读一样,那么这个数字就是一个回文数。例如32123就是一个回文数;17在某种意义上也是一个回文数,因为它的二进制型式——10001——是一个回文数。 请你帮忙开发一个程序,判断一个数n在任意进制(2-16)下是否有回文数。 输入描述: 输入包含多组数据。每组数据包括一个正整数n (1≤n 输出描述: 对应每组数据,如果n在2-16进制下存在回文数,则输出“Yes”;否则输出“No”。 输入例子: 3212317 输出例子: YesYes

     举报   纠错  
 
切换
1 个答案

#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;

}

 
切换
撰写答案