rt,
#include<iostream>
#include<string.h>
using namespace std;
int b,idx=1;
bool isloop(string num){
if(num.length()==1) return true;//长度为1直接true
int numidx=num.length();
string numtmp=num;
string ans;
while(1){//用倒序赋值判断是否是回文
ans += num[numidx];
numidx--;
if(numidx==0) break;
}
if(numtmp==ans) return true;//两个字符串相等 true
return false;
}
string convert(int num){
string constr,conans;
char tmpx;
while(num){
if(num%b>=10){//如果余数>10,转字母
tmpx = num%b-10+'A';
}else{
tmpx = num%b+'0';
}
constr+=tmpx;//加进字符串
num/=b;//类似于10进制分离数位
}
for(int i=constr.length();i>=0;--i){//倒序赋值
conans+=constr[i];
}
return conans;
}
int main(){
cin>>b;
for(int i=1;i<=300;++i){
string con = convert(i);
string conpf = convert(i*i);
//cout<<con<<" "<<conpf<<"\n";
if(isloop(conpf)){
cout<<con<<" "<<conpf<<"\n";
}
}
return 0;
}
求调,谢谢