这题就是简单的把从1到300的数用给定B进制表示一下,再把他的平方也表示一下,如果平方的B进制表示是回文数的话,就输出这个数还有他的平方的B进制表示。
代码如下:
/*
ID: 13913351
LANG: C
TASK:palsquare
*/
#include<stdio.h>
#include<string.h>
char num[21]={"0123456789ABCDEFGHIJ"};
void shift(int m,int n,char res[32])
{
int k=0;
while(n!=0)
{
res[k++]=num[n%m];
n/=m;
}
res[k]='\0';
}
int main()
{
FILE *fin = fopen ("palsquare.in", "r");
FILE *fout = fopen ("palsquare.out", "w");
int m;
fscanf(fin,"%d",&m);
char x[32],res[32];
int i,j;
for(i=1;i<=300;i++)
{
// printf("%d\n",i);
shift(m,i,x);
shift(m,i*i,res);
for(j=0;j<strlen(x)/2;j++)
{
char ch;
ch=x[j];
x[j]=x[strlen(x)-1-j];
x[strlen(x)-1-j]=ch;
}
for(j=0;j<strlen(res)/2;j++)
{
if(res[j]!=res[strlen(res)-j-1])
{
break;
}
}
if(j>=strlen(res)/2)
{
fprintf(fout,"%s %s\n",x,res);
}
}
return 0;
}
祝大家学习愉快哦!!