考察进制转化 注意一些细节就可以了
直接上代码:
/*
ID: who jay
LANG: C++
TASK: palsquare
*/
#include<stdio.h>
int x[20],xlen,y[20],ylen,B;
void change(int n)
{
int m;
m=n;
xlen=0;
while(m)
{
x[++xlen]=m%B;
m/=B;
}
m=n*n;
ylen=0;
while(m)
{
y[++ylen]=m%B;
m/=B;
}
}
bool ispal()
{
bool flag=1;
int i,j;
for(i=1,j=ylen; i<=j; i++,j--)
{
if(y[i]!=y[j])
{
flag=0;
return 0;
break;
}
}
if(flag)
return 1;
}
int main()
{
FILE *fin = fopen ("palsquare.in", "r");
FILE *fout = fopen ("palsquare.out", "w");
char c[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J'};
int i,j;
fscanf(fin,"%d",&B);
for(i=1; i<301 ;i++)
{
change(i);
if(ispal())
{
for(j=xlen; j>0 ;j--)
fprintf(fout,"%c",c[x[j]]);
fprintf(fout," ");
for(j=ylen; j>0 ;j--)
fprintf(fout,"%c",c[y[j]]);
fprintf(fout,"\n");
}
}
return 0;
}