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 holeof 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

    /*
        Name:
        Copyright:
        Author:  流照君
        Date: 2019/8/17 16:21:24
        Description:
    */
    #include <iostream>
    #include<string>
    #include <algorithm>
    #include <vector>
    #define inf 0x3f3f3f3f
    using namespace std;
    typedef long long ll;
    string s;
    ll to_digit1(string ss)
    {
    	ll n=ss.size();
    	ll sum=0;
    	for(int i=0;i<n;i++)
    	{
    		sum=sum*10+(ss[i]-'0');
    	}
    	return sum;
    }
    
    string to_string1 (ll sum1)
    {
    	string ss;
    	while(sum1>0)
    	{
    		ll dig=sum1%10;
    		sum1=sum1/10;
    		ss=char(dig)+ss;
    	}
    	return ss;
    }
    bool cmp1(char x,char y)
    {
    	return x<y;
    }
    bool cmp2(char x,char y)
    {
    	return x>y;
    }
    int main(int argc, char** argv)
    {
        //freopen("in.txt", "r", stdin);
        //freopen("out.txt", "w", stdout);
        string s1,s2;
        cin>>s;
        s.insert(0, 4 - s.length(), '0');
        s1=s;
        s2=s;
        sort(s1.begin() ,s1.end(),cmp1);
        sort(s2.begin() ,s2.end(),cmp2);
        if(s1==s2)
        cout<<s2<<" - "<<s1<<" = "<<"0000"<<endl;
        else
        {
        	//ll ce=to_digit1("7856");
        	//cout<<ce<<endl;
            //cout<<s2<<" - "<<s1<<" = "<<"0000"<<endl;
        	//exit(0);
        	do
        	{
        		int d1=stoi(s1);
        		int d2=stoi(s2);
        		int d3=d2-d1;
        		printf("%04d - %04d = %04d
    ",d2,d1,d3);
        		//cout<<d2<<" - "<<d1<<" = "<<d3<<endl;
        		s=to_string(d3);
        		s.insert(0, 4 - s.length(), '0'); //the key
        		s1=s;
        		s2=s;
        		sort(s1.begin() ,s1.end(),cmp1);
        		sort(s2.begin() ,s2.end(),cmp2);
    		}while(s!="6174");
    	}
        return 0;
    }
    

      

  • 相关阅读:
    工具推荐-根据IP地址精确定位经纬度(永久免费)
    VMware与Centos系统安装
    Python 之ConfigParser模块
    Python记录日志模块推荐-loguru!
    Excel 两列单元格合并超级链接的VBA 写法
    Shell脚本日志关键字监控+告警
    Python字符串及基本操作(入门必看)!!
    github release 下载文件慢、或者失败的解决方法
    Python字典及基本操作(超级详细)
    为什么使用 Containjs 模块化管理工具效率高?
  • 原文地址:https://www.cnblogs.com/liuzhaojun/p/11369466.html
Copyright © 2011-2022 走看看