这是删除了所有调试语句的:
```
#include <bits/stdc++.h>
#define int long long
using namespace std;
inline bool cmp1(int x, int y) {
return x > y;
}
inline bool cmp2(int x, int y) {
return x < y;
}
int nn[101], len;
inline int getmaxiumsort(int x) {
// 获取由当前数字组成的最大排序
len = 0;
while (x != 0) {
nn[++len] = x % 10;
x /= 10;
}
sort(nn + 1, nn + len + 1, cmp1);
int ret = 0;
for (int i = 1; i <= len; ++i) {
ret *= 10;
ret += nn[i];
}
return ret;
}
inline int getminiumsort(int x) {
// 获取由当前数字组成的最小排序
len = 0;
while (x != 0) {
nn[++len] = x % 10;
x /= 10;
}
sort(nn + 1, nn + len + 1, cmp2);
int ret = 0;
for (int i = 1; i <= len; ++i) {
ret *= 10;
ret += nn[i];
}
return ret;
}
int repeat[1000001], id;
inline int findnum(int x) {
for (int i = 0; i <= id; ++i) {
if (repeat[i] == x) {
return i;
}
}
return -1;
}
signed main() {
int x;
while (cin >> x) {
bool repeating;
int beg, length;
int begnum;
int now;
now = x;
repeating = false;
while (1) {
int now1 = getmaxiumsort(now);
int now2 = getminiumsort(now);
now = now1 - now2;
if (repeating == false) {
int k = findnum(now);
if (k != -1) {
repeating = true;
beg = k;
length = 1;
begnum = now;
} else { repeat[id++] = now;
}
} else {
if (now == repeat[beg + length]) {
length++;
} else if (now == begnum) {
break ;
} else if (now != repeat[beg +length] && now != begnum) {
repeating = false;
}
}
}
for (int i = beg; i < beg + length; ++i) {
cout << repeat[i] << " ";
}
cout << endl;
}
}
```
by littlefrog @ 2021-02-03 10:31:39