#include<iostream> #include<cstdio> #include<cstdlib> #include<cmath> #include<cstring> using namespace std; int b; int a[1000]; char g[12]={'A','B','C','D','E','F','G','H','I','J','K','L'};//标出这些字母 bool judge(int x) { int stop=1,tail=1; while(x!=0)//进制转换 { a[tail]=x%b; x=x/b; tail++; } tail--; for(int i=1;i<=(tail+1)/2;i++) if(a[i]!=a[tail+1-i]) { stop=0;//判断是否为回文 break; } if(stop==1) return 1; else return 0; } void print(int x) { int tail=1; while(x!=0)//照例进制转换 { a[tail]=x%b; x=x/b; tail++; } tail--; for(int i=tail;i>=1;i--)//倒叙输出 { if(a[i]<=9) printf("%d",a[i]); else printf("%c",g[a[i]-10]); } } int main() { scanf("%d",&b); for(int i=1;i<=300;i++) { if(judge(i*i)==1) { print(i);//打印这个数 printf(" "); print(i*i);//打印这个数的平方 printf("\n"); } }/**/ return 0; } /************************************************************** Problem: 1938 User: admin Language: C++ Result: Accepted Time:43 ms Memory:2080 kb ****************************************************************/