1346. 回文平方

又是熟悉的毒瘤进制转换题(雾)

注意点:

  • 结果均在\(b\)进制下表示
  • 十六进制注意\(10 \sim 15\)\(A \sim F\)表示嗷
int b;

char get(int x)
{
    if(x>=0 && x<=9) return '0'+x;
    return 'A'+x-10;
}

string base(int x)
{
    string res;
    while(x)
    {
        res+=get(x%b);
        x/=b;
    }
    reverse(res.begin(),res.end());
    return res;
}

bool check(string s)
{
    bool ok=true;
    int len = s.size();
    for(int i=0;i<len/2;i++)
        if(s[i] != s[len-1-i])
            return false;
    return true;
}

int main()
{
    cin>>b;

    for(int i=1;i<=300;i++)
    {
        string res=base(i*i);
        if(check(res))
            cout<<base(i)<<' '<<res<<endl;
    }

    //system("pause");
    return 0;
}
posted @ 2021-01-21 18:49  Dazzling!  阅读(55)  评论(0编辑  收藏  举报