题目传送门
题目描述
回文数是指从左向右念和从右向左念都一样的数。如 12321 就是一个典型的回文数。
给定一个用十进制表示的正整数 B,输出所有 [1,300] 中,它的平方用 B 进制表示时是回文数的数。
输入格式
共一行,一个单独的正整数 B。
输出格式
每行两个 B 进制的符合要求的数字,第二个数是第一个数的平方,且第二个数是回文数。
注意大于 9 的数,用字母表示。如用 A
表示 10,B
表示 11,用第 n 个大写字母表示 n+9。
厮箓
说300以内就循环到300,判断是否回文,回文的话输出祂和祂的平方
禔碣
#include <bits/stdc++.h>
using namespace std;
char ch[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int n,s[303];
void jz(int a,int b){
int r=0;
while(a){
s[++r]=a%b;
a/=b;
}
s[0]=r;
}
bool change(){
for(int i=1;i<=s[0];i++){
if(s[i]!=s[s[0]+1-i])return false;
}
return true;
}
void print(){
for(int i=s[0];i>=1;i--){
if(s[i]<=9)cout<<s[i];
else cout<<ch[s[i]-10];
}
}
int main()
{
cin>>n;
for(int i=1;i<=300;i++){
jz(i*i,n);
if(change()){
jz(i,n);
print();
cout<<' ';
jz(i*i,n);
print();
cout<<endl;
}
}
return 0;
}