记录编号 392061 评测结果 AAAAAAAA
题目名称 回文平方数 最终得分 100
用户昵称 Gravatarユッキー 是否通过 通过
代码语言 C++ 运行时间 0.003 s
提交时间 2017-04-06 22:31:20 内存使用 0.29 MiB
显示代码纯文本
#include <cstdio>
#include <cmath>
int bit1[500];
int bit2[500];
int n;
int converTo(int top,int num,int base)
{
    top=-1;
    do{
        bit2[++top]=num%base;
        num/=base;
    }while(num>0);
    return top;
}

int converto(int top,int num,int base)
{
    top=-1;
    do{
        bit1[++top]=num%base;
        num/=base;
    }while(num>0);
    return top;
}
bool pd(int bit2[],int top)
{
    int i;
    for(i=0;i<=top;i++)
    {
            if(bit2[i]!=bit2[top-i] && i<=top-i)
                return false;
    }
    return true;
}
int main()
{
    freopen("palsquare.in","r",stdin);
    freopen("palsquare.out","w",stdout);

    scanf("%d",&n);
    int i,j,k;
    for(i=1;i<=300;i++)
    {
        int tmp=i*i;
        int top2;
        int x=converTo(top2,tmp,n);
        if(pd(bit2,x))
        {
            int top1;
            int y=converto(top1,i,n);
            for(j=y;j>=0;j--)
            {
                if(bit1[j]>=10)
                {
                    printf("%c",'A'+bit1[j]-10);
                    continue;
                }
                printf("%d",bit1[j]);
            }
            printf(" ");
            for(k=x;k>=0;k--)
            {
                if(bit2[k]>=10)
                {
                    printf("%c",'A'+bit2[k]-10);
                    continue;
                }
                printf("%d",bit2[k]);
            }
                printf("\n");
        }
    }
    return 0;
}