zoukankan      html  css  js  c++  java
  • 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, 10000)区间内的正整数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
    #include <iostream>
    #include <string>
    #include <algorithm>
    #include <strstream>
    using namespace std;
    
    bool cmp(char & a,char & b)
    {
        return a>b;
    }
    
    int main(void)
    {
        /* code */
        string input;
        cin>>input;
        //补充达到四个数字
        if(input.length()<4)
            {
                if(input.length()==1)
                {
                    input="000"+input;
                }
                else if(input.length()==2)
                {
                    input="00"+input;
                }
                else
                {
                    input="0"+input;
                }
            }
        int ans=1000;
        while(ans!=6174&&ans!=0)
        {
            sort(input.begin(), input.end());
            string in1=input;
            int a=atoi(&input[0]);
            sort(input.begin(),input.end(),cmp);
            string in2=input;
            int b=atoi(&input[0]);
            ans=b-a;
            strstream ss;
            ss<<ans;
            ss>>input;
            if(input.length()<4)
            {
                if(input.length()==1)
                {
                    input="000"+input;
                }
                else if(input.length()==2)
                {
                    input="00"+input;
                }
                else
                {
                    input="0"+input;
                }
            }
            cout<<in2<<" - "<<in1<<" = "<<input<<endl;
        }
    
        return 0;
    }
  • 相关阅读:
    new 做了什么
    create-react-app+react-app-rewired引入antd实践
    实战build-react(二)-------引入Ant Design(增加)
    package.json文件
    读书多些会怎样
    关于学历
    QDialog弹出一个窗口,改变窗口大小
    #include <thread>
    #include <memory>
    #include <map>
  • 原文地址:https://www.cnblogs.com/xiongmao-cpp/p/6370229.html
Copyright © 2011-2022 走看看