• APT甲级——A1069 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

    注意点:
    (1)题目并未保证输入的n一定是在[1000,10000)之间的数,所以对于输入为53这样的数,第一行输出应为5300 - 0035 = 5265

    (2)当输入的数为0或者6174时要特殊判断,输入0输出应为0000 - 0000 = 0000;输入6174输出应为7641 - 1467= 6174,而不能没有输出

    (3)输出的数必须为4位,不够4位要在高位补0

    
    
     1 #include <iostream>
     2 #include <string>
     3 #include <algorithm>
     4 using namespace std;
     5 int main()
     6 {
     7     int A, B, preAns = -1, Ans = 0, flag = 0;
     8     string Na, Nb;
     9     cin >> Ans;    
    10     while (preAns != Ans)
    11     {
    12         preAns = Ans;
    13         Na = to_string(Ans);
    14         while (Na.length() < 4)
    15             Na += "0";
    16         sort(Na.begin(), Na.end(), [](char a, char b) {return a > b; });
    17         A = stoi(Na.c_str());
    18         sort(Na.begin(), Na.end(), [](char a, char b) {return a < b; });
    19         B = stoi(Na.c_str());
    20         Ans = A - B;
    21         if (flag == 1 && preAns == Ans)
    22             break;
    23         printf("%04d - %04d = %04d
    ", A, B, Ans);
    24         flag = 1;//怎么都得有一行输出
    25     }
    26     return 0;
    27 }
  • 相关阅读:
    ElasticSearch 分词器
    ElasticSearch 搜索引擎概念简介
    Kibana,Logstash 和 Cerebro 的安装运行
    ElasticSearch 安装与运行
    ElasticSearch 入门简介
    SVM 支持向量机算法-实战篇
    SVM 支持向量机算法-原理篇
    nginx 访问限速
    nginx 开启 autoindex
    nginx 开启 gzip 压缩
  • 原文地址:https://www.cnblogs.com/zzw1024/p/11302932.html
Copyright © 2020-2023  润新知