大意略。
/*
ID:g0feng1
LANG:C++
TASK:palsquare
*/
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cstdio>
#include <string>
#include <cstring>
#include <cmath>
#include <map>
#include <algorithm>
#include <stack>
using namespace std;
ofstream fout("palsquare.out");
ifstream fin("palsquare.in");
int Base;
const int maxn = 110000;
int a[maxn], b[maxn];
void read_case()
{
fin>>Base;
}
int check(int *a, int n)
{
for(int i = 0; i < n/2; i++) if(a[i] != a[n-1-i]) return 0;
return 1;
}
void print(int n, int base)
{
stack<char> S;
int s = n;
while(s)
{
int t = s % base;
s /= base;
if(t <= 9)
{
char c = t+'0';
S.push(c);
}
else if(t >= 10)
{
char c = t-10+'A';
S.push(c);
}
}
while(!S.empty()) { char c = S.top(); fout<<c; S.pop(); }
fout<<" ";
s = n*n;
while(s)
{
int t = s % base;
s /= base;
if(t <= 9)
{
char c = t+'0';
S.push(c);
}
else if(t >= 10)
{
char c = t-10+'A';
S.push(c);
}
}
while(!S.empty()) { char c = S.top(); fout<<c; S.pop(); }
fout<<endl;
}
int change(int n, int base)
{
int s = n;
int len1 = 0, len2 = 0;
s = n*n;
while(s)
{
int t = s % base;
s /= base;
b[len2++] = t;
}
if(check(b, len2)) print(n, base);
}
void solve()
{
read_case();
for(int i = 1; i <= 300; i++)
{
change(i, Base);
}
}
int main()
{
solve();
return 0;
}