1069 The Black Hole of Numbers
Posted liuzhaojun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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\n",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;
以上是关于1069 The Black Hole of Numbers的主要内容,如果未能解决你的问题,请参考以下文章