原创代码
仅供参考
欢迎评论O(∩_∩)O~
/*
ID: 输你自己的
PROG: palsquare
LANG: C++
*/
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
using namespace std;
char a[50],b[50];
int c;
void zjz(int x){
int k=0;
while(c!=0){
a[++k]=c%x+48;
c/=x;
}
}
void zjz2(int x,int i){
int k=0;
while(i!=0){
b[++k]=i%x+48;
i/=x;
}
}
bool pall()
{
int mid=strlen(a);
if(mid%2!=0){
mid/=2;
for(int i=mid;i>=1;i--)
if(a[i]!=a[mid*2-i+1]) return false;
return true;
}
if(mid%2==0){
mid/=2;
for(int i=mid;i>=1;i--)
if(a[i]!=a[mid*2-i]) return false;
return true;
}
}
int main()
{
b[0]=a[0]='#';
freopen("palsquare.in","r",stdin);
freopen("palsquare.out","w",stdout);
int bb;
cin>>bb;
for(int i=1;i<=300;i++){
c=i*i;
zjz(bb);
if(pall()){
zjz2(bb,i);
for(int i=strlen(b)-1;i>=1;i--)
if(b[i]-48<10) printf("%c",b[i]);
else printf("%c",(b[i]-57+64));
printf(" ");
for(int i=1;i<strlen(a);i++)
if(a[i]-48<10) printf("%c",a[i]);
else printf("%c",(a[i]-57+64));
cout<<endl;
}
}
return 0;
}
ps:所有的输出都是B进制
转进制函数使用后要倒序输出
a[] 顺序输出是因为对称