zoukankan      html  css  js  c++  java
  • 1069 The Black Hole of Numbers

    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 (.

    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

    思路:

      注意特殊情况0000 和 6174.

    Code:

     1 #include <bits/stdc++.h>
     2 
     3 using namespace std;
     4 
     5 int charToInt(vector<char>& v) {
     6     int num = 0;
     7     for (int i = 0; i < 4; ++i) num = num * 10 + v[i];
     8     return num;
     9 }
    10 
    11 vector<char> intTochar(int n) {
    12     vector<char> num(4);
    13     for (int i = 3; i >= 0; --i) {
    14         num[i] = n % 10;
    15         n /= 10;
    16     }
    17     return num;
    18 }
    19 
    20 int main() {
    21     int n;
    22     cin >> n;
    23     if (n == 0) printf("%04d - %04d = %04d
    ", 0, 0, 0);
    24     if (n == 6174) printf("%04d - %04d = %04d
    ", 7641, 1467, 6174);
    25     int last = -1, temp = n;
    26     while (last != temp) {
    27         vector<char> v = intTochar(temp);
    28         sort(v.begin(), v.end(), greater<char>());
    29         int max = charToInt(v);
    30         sort(v.begin(), v.end(), less<char>());
    31         int min = charToInt(v);
    32         last = temp;
    33         temp = max - min;
    34         if (temp == last) break;
    35         printf("%04d - %04d = %04d
    ", max, min, temp);
    36     }
    37     return 0;
    38 }
    永远渴望,大智若愚(stay hungry, stay foolish)
  • 相关阅读:
    Unix命令大全
    vs2008 与 IE8出现的兼容性问题
    Java 创建文件、文件夹以及临时文件
    如何修改Wamp中mysql默认空密码
    PAT 乙级真题 1003.数素数
    Tags support in htmlText flash as3
    DelphiXE4 FireMonkey 试玩记录,开发IOS应用 还是移植
    10 Great iphone App Review sites to Promote your Apps!
    HTML tags in textfield
    Delphi XE4 IOS 开发, "No eligible applications were found“
  • 原文地址:https://www.cnblogs.com/h-hkai/p/12823840.html
Copyright © 2011-2022 走看看