进制转换的问题
一般短除法就可以了。
由于是检测输出的,所以处理字符串更方便,如果有别的操作的话,用整数来写。
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
char get(int a){
if(a<=9&&a>=0) return a+'0';
else return a-10+'A';
}
string change(int a,int b){
string str;
while(a){
str +=get(a%b);
a/=b;
}
reverse(str.begin(),str.end());
return str;
}
bool check(string str){
for(int i=0,j=str.length()-1;i<j;i++,j--){
if(str[i]!=str[j]) return 0;
}
return 1;
}
int main(){
// freopen("D:\\Vscode_ph\\output.txt","w",stdout);
int b;cin>>b;
for(int i=1;i<=300;i++){
string num=change(i*i,b);
if(check(num)){
cout<<change(i,b)<<' '<<num<<endl;
}
}
}