1346. 回文平方

1346. 回文平方

回文数是指数字从前往后读和从后往前读都相同的数字。

例如数字 12321

就是典型的回文数字。

现在给定你一个整数 B ,请你判断 1∼300 之间的所有整数中,有哪些整数的平方转化为 B 进制后,其 B

进制表示是回文数字。 输入格式

一个整数 B

。 输出格式

每行包含两个在 B

进制下表示的数字。

第一个表示满足平方值转化为 B

进制后是回文数字那个数,第二个数表示第一个数的平方。

所有满足条件的数字按从小到大顺序依次输出。 数据范围

2≤B≤20 , 对于大于 9 的数字,用 A 表示 10,用 B 表示 11

,以此类推。 输入样例:

10

输出样例:

1 1 2 4 3 9 11 121 22 484 26 676 101 10201 111 12321 121 14641 202
40804 212 44944 264 69696

代码:

#include<iostream>
using namespace std;

char get(int x)//将x转换为字符形式
{
    
    
    if(x<=9)return x+'0';
    return x-10+'A';
}
string base(int n,int b)//讲n转换为b进制,返回对应字符串
{
    
    
    string res;
    while(n)
    {
    
    
        res+=get(n%b);
        n/=b;
    }
    reverse(res.begin(),res.end());//翻转回高位在左
    return res;
}

bool check(string s)
{
    
    
    for(int i=0,j=s.size()-1;i<j;i++,j--)
    {
    
    
        if(s[i]!=s[j])return false;
    }
    return true;
}
int main()
{
    
    
    int b;
    cin>>b;
    for(int i=1;i<=300;i++)
    {
    
    
        string num=base(i*i,b);
        if(check(num))cout<<base(i,b)<<" "<<num<<endl;
    }
}

猜你喜欢

转载自blog.csdn.net/m0_51344983/article/details/113338408