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

简介: “数学黑洞”:任意一个4位自然数,将组成该数的各位数字重新排列,形成一个最大数和一个最小数,之后两数相减,其差仍为一个自然数。重复进行上述运算,会发现一个神秘的数。

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


数字黑洞


“数学黑洞”:


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


相关文章
|
4月前
|
C++
41.用c++编写程序:从键盘上任意输20个1-99之间的整数,分别统计其个位数0-9的数字各有多少
41.用c++编写程序:从键盘上任意输20个1-99之间的整数,分别统计其个位数0-9的数字各有多少
39 0
|
4月前
|
测试技术 C++
【PTA】​L1-003 个位数统计​ (C++)
【PTA】​L1-003 个位数统计​ (C++)
98 0
【PTA】​L1-003 个位数统计​ (C++)
|
9月前
|
算法 测试技术 程序员
C++算法:第N位数的原理、源码及测试用例
C++算法:第N位数的原理、源码及测试用例
|
C++
C++ 输出特定位数小数
C++ 输出特定位数小数
121 0
【c++】进行位数保留的函数
【c++】进行位数保留的函数
92 0
|
C++
2014秋C++第11周项目4参考-特殊三位数
课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。  【项目4-特殊三位数】请输出满足条件n=a!+b!+c!的所有三位数n,其中,a、b、c分别是n的百、十、个位数。要求用自定义函数实现求阶乘。 int main() { } long fac(i
1194 0
|
C++
C++第12周项目5——特殊三位数
课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 【项目5-特殊三位数】  请输出满足条件n=a!+b!+c!的所有三位数n,其中,a、b、c分别是n的百、十、个位数。要求用自定义函数实现求阶乘。 参考解答: #include&lt;iostream&gt; using namespace std; int fac
1032 0
求某个大于10000的数的约数中,最大的三位数(C ++)
//求某个大于10000的数的约数中,最大的三位数 //求某个大于10000的数的约数中,最大的三位数 #include using namespace std; int main() {  int i,integer; cin>>integer; for(i=999;i>=100;...
735 0