将一个数的数码倒过来所得到的新数叫做原数的反序数,如果一个数等于它的反序数,则称它为 对称数。例如,12321、3、151、44、6776 等都是对称数。 编写一个函数 f,判断十进制正整数 k 是否是对称数。
要求:在 main 函数中输入一个正整数 k 并调用该函数 f,若 k 是对称数,再判断 k 的二进制形式 是否也是对称数。若 k 及其二进制都是对称数,则输出 k 的十进制值及二进制值。
#include<iostream>
#include<string>
#include<iterator>
#include<algorithm>
using namespace std;
bool judge_symmetry(const string& s)
{
string s2;
auto iter = back_inserter(s2);
reverse_copy(s.begin(), s.end(), iter);
if (s2 == s)
return true;
else
return false;
}
int main()
{
string s;
cin >> s;
if (judge_symmetry(s))
{
int dec = stoi(s);
int temp = dec;
int binary = 0, j = 1;
while (temp)
{
binary = binary + j * (temp % 2);
temp /= 2;
j *= 10;
}
if (judge_symmetry(to_string(binary)))
cout << dec << " " << binary << endl;
}
system("pause");
}