话说这个哪错了??

P1532 卡布列克圆舞曲

这是删除了所有调试语句的: ``` #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


|