zoukankan      html  css  js  c++  java
  • The Black Hole of Numbers (strtoint+inttostr+sort)

    For any 4-digit integer except the ones with all the digits being the same, if we sort the digits in non-increasing order first, and then in non-decreasing order, a new number can be obtained by taking the second number from the first one. Repeat in this manner we will soon end up at the number 6174 -- the "black hole" of 4-digit numbers. This number is named Kaprekar Constant.

    For example, start from 6767, we'll get:

     7766 - 6677 = 1089

     9810 - 0189 = 9621

     9621 - 1269 = 8352

     8532 - 2358 = 6174

     7641 - 1467 = 6174

     ... ...

    Given any 4-digit number, you are supposed to illustrate the way it gets into the black hole.

     Input Specification:

    Each input file contains one test case which gives a positive integer N in the range (0, 10000).

     Output Specification:

    If all the 4 digits of N are the same, print in one line the equation "N - N = 0000". Else print each step of calculation in a line until 6174 comes out as the difference. All the numbers must be printed as 4-digit numbers.

    Sample Input 1:

    6767

     Sample Output 1:

    7766 - 6677 = 1089

    9810 - 0189 = 9621

    9621 - 1269 = 8352

    8532 - 2358 = 6174

     Sample Input 2:

    2222

     Sample Output 2:

    2222 - 2222 = 0000

    坑点1、数字都要四位的2、如果是判断下一个式子的差不等于上个结果,然后跳出的话,那么需要判断,是不是第一次输出。比如,输入6174,结果就等于6174,那么就会没输出,直接跳出。

      1 #include <iostream>
      2 
      3 #include <algorithm>
      4 
      5 #include<string>
      6 
      7 #include <sstream>
      8 
      9 #include <iomanip>
     10 
     11 using namespace std;
     12 
     13  
     14 
     15 int a1[5];
     16 
     17 int a2[5];
     18 
     19  
     20 
     21 int bb[1000];
     22 
     23  
     24 
     25 bool cmp1(int a,int b)
     26 
     27 {
     28 
     29    return a>b;
     30 
     31 }
     32 
     33  
     34 
     35 bool cmp2(int a,int b)
     36 
     37 {
     38 
     39    return a<b;
     40 
     41 }
     42 
     43  
     44 
     45 int main()
     46 
     47 {
     48 
     49       string n;
     50 
     51       int i;
     52 
     53  
     54 
     55       while(cin>>n)
     56 
     57       {
     58 
     59       
     60 
     61          int tt,c1,c2;
     62 
     63          stringstream ss1;
     64 
     65          ss1<<n;
     66 
     67          ss1>>tt;
     68 
     69       
     70 
     71          i=0;
     72 
     73          bool fir=true;
     74 
     75          while(true)
     76 
     77          {
     78 
     79  
     80 
     81                   string ss;
     82 
     83                   stringstream ss2;
     84 
     85                   ss2<<setfill('0')<<setw(4)<<tt;
     86 
     87                   ss2>>ss;
     88 
     89  
     90 
     91                   for(i=0;i<ss.length();i++)
     92 
     93                   {
     94 
     95                  a1[i]=ss[i]-'0';
     96 
     97                    a2[i]=a1[i];
     98 
     99                   }
    100 
    101  
    102 
    103              sort(a1,a1+ss.length(),cmp1);
    104 
    105                sort(a2,a2+ss.length(),cmp2);
    106 
    107  
    108 
    109                    c1=0; c2=0;
    110 
    111                for(i=0;i<ss.length();i++)
    112 
    113                   {
    114 
    115                    c1=c1*10+a1[i];
    116 
    117                      c2=c2*10+a2[i];
    118 
    119                   }
    120 
    121  
    122 
    123                   
    124 
    125                   if(c1-c2==tt&&!fir)  break;
    126 
    127                   else 
    128 
    129                         
    130 
    131                   {
    132 
    133                         fir=false;
    134 
    135                         cout<<setfill('0')<<setw(4)<<c1<<" - "<<setfill('0')<<setw(4)<<c2<<" = "<<setfill('0')<<setw(4)<<c1-c2<<endl;
    136 
    137                         tt=c1-c2;
    138 
    139                   }     
    140 
    141          }  
    142 
    143       }
    144 
    145    return 0;
    146 
    147 }
    148 
    149  
    View Code
  • 相关阅读:
    Java8系列之重新认识HashMap(转)
    kafka 消费者和生产者测试类
    zookeeper配置
    JNLP应用程序无法打开的解决办法
    Functional Programming 资料收集
    Python的问题解决: IOError: [Errno 32] Broken pipe
    python的subprocess的简单使用和注意事项
    Python tricks(7) -- new-style class的__slots__属性
    Python tricks(6) -- python代码执行的效率
    Python tricks(5) -- string和integer的comparison操作
  • 原文地址:https://www.cnblogs.com/xiaoyesoso/p/4235157.html
Copyright © 2011-2022 走看看