既然是各种进制,那就写个函数解决进制转换的问题吧,相信这个不难吧,但应该注意的是大于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; }