标签:
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 (0, 10000).
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、数字都要四位的2、如果是判断下一个式子的差不等于上个结果,然后跳出的话,那么需要判断,是不是第一次输出。比如,输入6174,结果就等于6174,那么就会没输出,直接跳出。
1 #include <iostream> 2 3 #include <algorithm> 4 5 #include<string> 6 7 #include <sstream> 8 9 #include <iomanip> 10 11 using namespace std; 12 13 14 15 int a1[5]; 16 17 int a2[5]; 18 19 20 21 int bb[1000]; 22 23 24 25 bool cmp1(int a,int b) 26 27 { 28 29 return a>b; 30 31 } 32 33 34 35 bool cmp2(int a,int b) 36 37 { 38 39 return a<b; 40 41 } 42 43 44 45 int main() 46 47 { 48 49 string n; 50 51 int i; 52 53 54 55 while(cin>>n) 56 57 { 58 59 60 61 int tt,c1,c2; 62 63 stringstream ss1; 64 65 ss1<<n; 66 67 ss1>>tt; 68 69 70 71 i=0; 72 73 bool fir=true; 74 75 while(true) 76 77 { 78 79 80 81 string ss; 82 83 stringstream ss2; 84 85 ss2<<setfill(‘0‘)<<setw(4)<<tt; 86 87 ss2>>ss; 88 89 90 91 for(i=0;i<ss.length();i++) 92 93 { 94 95 a1[i]=ss[i]-‘0‘; 96 97 a2[i]=a1[i]; 98 99 } 100 101 102 103 sort(a1,a1+ss.length(),cmp1); 104 105 sort(a2,a2+ss.length(),cmp2); 106 107 108 109 c1=0; c2=0; 110 111 for(i=0;i<ss.length();i++) 112 113 { 114 115 c1=c1*10+a1[i]; 116 117 c2=c2*10+a2[i]; 118 119 } 120 121 122 123 124 125 if(c1-c2==tt&&!fir) break; 126 127 else 128 129 130 131 { 132 133 fir=false; 134 135 cout<<setfill(‘0‘)<<setw(4)<<c1<<" - "<<setfill(‘0‘)<<setw(4)<<c2<<" = "<<setfill(‘0‘)<<setw(4)<<c1-c2<<endl; 136 137 tt=c1-c2; 138 139 } 140 141 } 142 143 } 144 145 return 0; 146 147 } 148 149
The Black Hole of Numbers (strtoint+inttostr+sort)
标签:
原文地址:http://www.cnblogs.com/xiaoyesoso/p/4235157.html