题目
回文数是指数字从前往后读和从后往前读都相同的数字。
例如数字 12321 就是典型的回文数字。
现在给定你一个整数 B,请你判断 1∼300之间的所有整数中,有哪些整数的平方转化为 B 进制后,其 B 进制表示是回文数字。
输入格式
一个整数 B。
输出格式
每行包含两个在 B 进制下表示的数字。
第一个表示满足平方值转化为 B 进制后是回文数字那个数,第二个数表示第一个数的平方。
所有满足条件的数字按从小到大顺序依次输出。
数据范围
2≤B≤20,
对于大于 9 的数字,用 A 表示 10,用 B 表示 11,以此类推。
输入样例:
10
输出样例:
1 1 2 4 3 9 11 121 22 484 26 676 101 10201 111 12321 121 14641 202 40804 212 44944 264 69696
源代码
#include#include //调用.size()函数取得字符串长度 #include//调用revserse函数 using namespace std; int huiwen(string str)//双指针法判断字符串是否回文 { int i,j; for(i=0,j=str.size()-1;i =0&&x<=9)return (x+'0'); else return (x-10+'A'); } string trans(int n,int B)//将数字转换为字符串的函数 { string s;//首先先定义一个空串用于储存 while(n>0)//逐位转换 { s=s+letter(n%B);//调用letter函数 n=n/B;//舍去最低位 } reverse(s.begin(),s.end());//反转字符串 return s;//返回字符串的值 } int main() { int B; cin>>B; for(int i=1;i<=300;i++)//筛选1-300中的数字 { string str=trans(i*i,B);//对i的平方进行字符串转换 if(huiwen(str))//进行回文判断 { string s=trans(i,B); cout< 当然最后输出字符串时也可以使用printf函数按%s进行输出不过要加.c_str()后缀兼容%s的格式
cout<
本题中调用的c++函数以及库知识
#include
字符串.size() 获取字符串长度并用一个变量接收 #include revserse(字符串.begin(),字符串.end()) 对字符串进行翻转
c++输出字符串用printf函数按%s时,须用字符串.c_str()作为后缀来在c++里实行兼容



