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

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

数字黑洞

“数学黑洞”:

任意一个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;
}

猜你喜欢

转载自blog.csdn.net/qq_51808107/article/details/109792892