对称数(string+转二进制)

将一个数的数码倒过来所得到的新数叫做原数的反序数,如果一个数等于它的反序数,则称它为 对称数。例如,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");
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值