53 lines
1.2 KiB
C
53 lines
1.2 KiB
C
#include <stdio.h>
|
|
|
|
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;
|
|
} |