/*
ID: cm750621
LANG: C++
TASK: palsquare
*/
#include <cstdio>
#include <cstdlib>
int b,num[10],sta[20];
int main(){
freopen("palsquare.in","r",stdin);
freopen("palsquare.out","w",stdout);
int i,j,k,m,n,l;
scanf("%d",&b);
for(i=1;i<=300;i++){
num[0]++;
j=-1;
while(num[++j]>=b){
num[j]%=b;
num[j+1]++;
}
for(k=0;k<20;k++)
sta[k]=0;
k=9;
while(num[k]==0)
k--;
for(j=0;j<=k;j++)
for(l=0;l<=k;l++){
sta[j+l]+=num[j]*num[l];
if(sta[l+j]>=b){
sta[l+j+1]+=sta[l+j]/b;
sta[l+j]%=b;
}
}
k=19;
while(sta[k]==0)
k--;
for(j=0;j<=k/2;j++)
if(sta[j]!=sta[k-j])
break;
if(j==k/2+1){
k=9;
while(num[k]==0)
k--;
while(k!=-1)
printf("%c",num[k--]>9?num[k+1]+'A'-10:num[k+1]+'0');
k=19;
putchar(' ');
while(sta[k]==0)
k--;
while(k!=-1)
printf("%c",sta[k--]>9?sta[k+1]+'A'-10:sta[k+1]+'0');
puts("");
}
}
return 0;
}
usaco 1.2.4 palsquare
最新推荐文章于 2022-05-09 20:34:55 发布