解析
这题就比较简单了,进制转化加回文检测,就OK了。
代码
/*
PROG:palsquare
ID:imking022
LANG:C++
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <cstdlib>
#include <map>
#include <algorithm>
using namespace std;
int n;
char reff[]="0123456789ABCDEFGHIJKLMN";
string i2s(int num, int base){
string str = "";
int k;
while(num){
k = num%base;
num = (num-k)/base;
str +=reff[k];
}
return str; // 直接倒序输出,回文正反都一样
}
bool ispalin(string str){
int i,j;
i = 0, j = str.size()-1;
while(i<j){
if(str[i] != str[j]) return false;
i++,j--;
}
return true;
}
int main(void){
cin>>n;
string a,b;
for(int i=1;i<=300;i++){
b = i2s(i*i,n);
if( ispalin(b) ){ // 平方是回文再处理原数字
a=i2s(i,n);
a.assign(a.rbegin(),a.rend());
cout<<a<<" "<<b<<endl;
}
}
return 0;
}