#include void calcNext(int lastResult) { if (lastResult == 6174) { return; } } int main() { int digits[10] = {0}; int maxComb, minComb; int nowChecking; int curDigit = 0; int i = 0, j = 0; scanf("%d", &nowChecking); while (nowChecking > 0) { curDigit = nowChecking % 10; if (digits[curDigit] > 0) { printf("error"); return 0; } else { digits[curDigit] = 1; nowChecking /= 10; } } while (nowChecking != 6174) { maxComb = 0; minComb = 0; for (i = 0; i < 10; i++) { for (j = 0; j < digits[i]; j++) { minComb = minComb * 10 + i; } } for (i = 9; i >= 0; i--) { for (j = 0; j < digits[i]; j++) { maxComb = maxComb * 10 + i; } } nowChecking = maxComb - minComb; printf("%d - %d = %d\n", maxComb, minComb, nowChecking); for (i = 0; i < 10; i++) { digits[i] = 0; } while (nowChecking > 0) { digits[nowChecking % 10]++; nowChecking /= 10; } nowChecking = maxComb - minComb; } return 0; }