既然是各种进制,那就写个函数解决进制转换的问题吧,相信这个不难吧,但应该注意的是大于10的进制应该有字母出现的,多以多处理一步吧
我写的进制转换的函数名字是jinzhi(),有两个参数,第一个是要转换的数,第二个是要转换成哪种进制的,返回的是字符串,应为转换过后的那个数用
十进制表示很可能溢出(事实上肯定会溢出)
既然有回文判断,那就写个函数判断是不是回文就好了,简单!
下面的步骤就好办了,1-300以内的,首先用十进制表示,再转换成所要求的进制,再判断是不是符合要求,
下面是代码
/*
ID: zhuihun1
PROG: palsquare
LANG: C++
*/
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
string jinzhi(int n,int x)
{
string res="";
char c;
while(n>0)
{
if(n%x>9)
c=55+n%x;
else
c='0'+n%x;
res=c+res;
n/=x;
}
return res;
}
bool huiwen(string str)
{
int l=(int)str.length();
for(int i=0;i<l/2;i++)
{
if(str[i]!=str[l-i-1])
return false;
}
return true;
}
int main()
{
ofstream fout ("palsquare.out");
ifstream fin ("palsquare.in");
int m;
fin>>m;
for(int i=1;i<=300;i++)
{
if(huiwen(jinzhi(i*i,m)))
fout<<jinzhi(i,m)<<" "<<jinzhi(i*i,m)<<endl;
}
return 0;
}