寻找四位数的 “数字黑洞”
数字黑洞
“数学黑洞”:
任意一个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; }