算法1
(暴力枚举) $O(n^2)$
blablabla
ASCII转化
进制转换与反转
双指针法判断回文
C++ 代码
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
char get(int x)//将x转化成为字符形式
{
if(x<=9){
return x+'0';
}
return x-10+'A';//大于10最少为10,开始
}
//将n转换b进制
string base(int n,int 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;//b进制
cin>>b;
for(int i=1;i<=300;i++){
//暴搜
//得到b进制数
string num=base(i*i,b);//将i*i转换成b进制数
//检查该数是否是回文
if(check(num))
cout<<base(i,b)<<' '<<base(i*i,b)<<endl;
}
}