寻找四位数的 “数字黑洞”
大家好,我是孙不坚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;
}