AcWing 1346. 回文平方
原题链接
简单
作者:
Bear_King
,
2021-01-14 19:03:05
,
所有人可见
,
阅读 280
回文平方
基本思路:十进制转化成其他进制:短除法
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
char get(int x)//把短除之后的余数转换成字符返回
{
if(x <= 9) return x + '0';
return x - 10 + 'A';
}
string base(int n,int b)//短除法
{
string num;
while(n) num += get(n % b) , n /= b;
reverse(num.begin(),num.end());
return num;
}
bool check(string num)
{
for(int i = 0 ,j = num.size()-1;i < j;i ++ , j --)//判断是否回文
if(num[i] != num[j])
return false;
return true;
}
int main()
{
int b;
cin>>b;
for(int i = 1;i <= 300;i ++)
{
auto num = base(i*i,b);//C11标准的auto类型
if(check(num))
cout<<base(i,b)<<" "<<num<<endl;
}
}