这是我参与8月更文挑战的第1天,活动详情查看:8月更文挑战
大家好,我是孙不坚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;
}
欢迎订阅专栏 我哎算法 , 希望能给需要的朋友带来方便,同时也希望能得到大家的关注与支持。