【c++】寻找四位数的 “数字黑洞”

寻找四位数的 “数字黑洞”

大家好,我是孙不坚1208,欢迎关注我的博客。

数字黑洞

“数学黑洞”:

任意一个4位自然数,将组成该数的各位数字重新排列,形成一个最大数和一个最小数,

之后两数相减,其差仍为一个自然数。

重复进行上述运算,会发现一个神秘的数。

描述

输入:
一个4位的自然数。

输出:
从该4位自然数开始,每次按题意变换后的自然数,直到数学黑洞为止。

案例

输入样例 :
7700
输出样例 :

7700
7623
5265
3996
6264
4176
6174

c++代码如下

#include <iostream>
using namespace std;
int main()
{
	int n, a, b, c, d;
	cin >> n;
	cout << n << endl;
	while(n != 6174)
	{
		a = n / 1000;
		b = n / 100 % 10;
		c = n / 10 % 10;
		d = n % 10;
		if(a < b)
			a ^= b ^= a ^= b;
		if(a < c)
			a ^= c ^= a ^= c;
		if(a < d)
			a ^= d ^= a ^= d;
		if(b < c)
			b ^= c ^= b ^= c;
		if(b < d)
			b ^= d ^= b ^= d;
		if(c < d)
			c ^= d ^= c ^= d;
		n = a * 1000 + b * 100 + c * 10 + d -
			(a + b * 10 + c * 100 + d * 1000);
		if(n < 10)
			cout << "000" << n << endl;
		else if(n < 100)
			cout << "00" << n << endl;
		else if(n < 1000)
			cout << "0" << n << endl;
		else
			cout << n << endl;
		}
	return 0;
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

請你喝杯Java

感谢您的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值