AcWing 1346. 回文平方
原题链接
简单
作者:
高小呆
,
2021-01-14 16:37:23
,
所有人可见
,
阅读 367
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int b;
char get(int x)
{
if(x<=9) return x+'0';
return x-10+'A';
}
string base(int x,int b)//把x转化成b进制
{
string num;
while(x)
{
num+=get(x%b);
x=x/b;
}
reverse(num.begin(),num.end());
return num;
}
bool check(string num)//双指针检查是否是回文,i从前面走,同时j从后面往前走
{
for(int i=0,j=num.size()-1;i<num.size();i++)
{
while(i<j&&i+j==num.size()-1)
{
if(num[i]==num[j])
j--;
else return false;
}
}
return true;
}
int main()
{
cin>>b;
for(int i=1;i<=300;i++)
{
string num=base(i*i,b);//把i*i转化成b进制
if(check(num))//如果是回文数字
cout<<base(i,b)<<" "<<num<<endl;
}
return 0;
}