• PAT乙级1019.数字黑洞(20 分)


    1019 数字黑洞(20 分)

    给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的 6174,这个神奇的数字也叫 Kaprekar 常数。

    例如,我们从6767开始,将得到

    7766 - 6677 = 1089
    9810 - 0189 = 9621
    9621 - 1269 = 8352
    8532 - 2358 = 6174
    7641 - 1467 = 6174
    ... ...
    

    现给定任意 4 位正整数,请编写程序演示到达黑洞的过程。

    输入格式:

    输入给出一个 (0,10^4​​) 区间内的正整数 N。

    输出格式:

    如果 N 的 4 位数字全相等,则在一行内输出 N - N = 0000;否则将计算的每一步在一行内输出,直到 6174 作为差出现,输出格式见样例。注意每个数字按 4 位数格式输出。

    输入样例 1:

    6767
    

    输出样例 1:

    7766 - 6677 = 1089
    9810 - 0189 = 9621
    9621 - 1269 = 8352
    8532 - 2358 = 6174
    

    输入样例 2:

    2222
    

    输出样例 2:

    2222 - 2222 = 0000

      光荣地把所有的坑都踩了一遍,注意输入的数要做处理,确保为四位数,排序使用sort函数防止超时问题,
    输入的数用string类型存储,减法运算时,将其转换为整型,得到的结果再次转换为四位数的字符串,输出
    如果差为0000或者6174才可以终止下一次循环,如果输入的数是这两个数,还是要进行减法运算,这里决定了
    条件判断的位置,string类型的输出使用cout
    #include<iostream>
    #include<stdlib.h>
    #include<algorithm>
    #include<string>
    using namespace std;
    bool comp(char m, char n)
    {
        if (m > n)
            return true;
        else
            return false;
    }
    int main()
    {
        string a, b, c;
        cin >> c;
        c.insert(0, 4 - c.length(), '0');
        while (true)
        {
            a = c;
            b = c;
            sort(a.begin(), a.end(), comp);
            sort(b.begin(), b.end());
            int x = stoi(a);
            int y = stoi(b);
            int z = x - y;
            c = to_string(z);
            c.insert(0, 4 - c.length(), '0');
            cout << a << " - " << b << " = " << c << endl;
            if (z == 0 || z == 6174)
                break;
        }
        system("pause");
        return 0;
    }
    
    
  • 相关阅读:
    (转载)SAPI 包含sphelper.h编译错误解决方案
    C++11标准的智能指针、野指针、内存泄露的理解(日后还会补充,先浅谈自己的理解)
    504. Base 7(LeetCode)
    242. Valid Anagram(LeetCode)
    169. Majority Element(LeetCode)
    100. Same Tree(LeetCode)
    171. Excel Sheet Column Number(LeetCode)
    168. Excel Sheet Column Title(LeetCode)
    122.Best Time to Buy and Sell Stock II(LeetCode)
    404. Sum of Left Leaves(LeetCode)
  • 原文地址:https://www.cnblogs.com/denghui666/p/9520080.html
Copyright © 2020-2023  润新知