usaco- palsquare

来源:互联网 发布:光盘贴纸打印软件 编辑:程序博客网 时间:2024/06/15 23:23

模拟题。

但是还算是稍微有点坑。

1,注意输出的是B进制数。

2,注意输出的时候进制超过10的输出字母。

越是简单的题目越容易犯错。

/*ID: rowanha3LANG: C++TASK: palsquare*/#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>using namespace std;int num[100000];int nums[100000];char nn[21]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K'};void dos(int a,int b){    int c;    c=a;    int len=0;    a=a*a;    while(a)    {        num[len++]=a%b;        a=a/b;    }    int i;    for(i=0;i<=(len-1)/2;i++)    {        if(num[i]!=num[len-1-i])return ;    }    int lens=0;    while(c)    {        nums[lens++]=c%b;        c=c/b;    }    for(i=lens-1;i>=0;i--)    {        cout<<nn[nums[i]];    }    cout<<" ";    for(i=len-1;i>=0;i--)    {        cout<<nn[num[i]];    }    cout<<endl;}int main(){    freopen("palsquare.in","r",stdin);    freopen("palsquare.out","w",stdout);    int n;    cin>>n;    int i;    for(i=1;i<=300;i++)    {        dos(i,n);    }    fclose(stdin);    fclose(stdout);    return 0;}