Java
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
do {
num = blackHole(num);
} while (num != 6174 && num != 0);
}
private static int blackHole(int n) {
String s = Integer.toString(n);
char[] c = s.toCharArray();
Arrays.sort(c);
int[] num = new int[4];
for (int i = 0; i < c.length; i++) {
num[3 - i] = c[c.length - i - 1] - '0';
}
int small = num[0] * 1000 + num[1] * 100 + num[2] * 10 + num[3];
int big = num[3] * 1000 + num[2] * 100 + num[1] * 10 + num[0];
int delta = big - small;
if (big == delta) {
System.out.printf("%04d - %04d = %04d", big, small, delta);
} else {
System.out.printf("%04d - %04d = %04d", big, small, delta);
}
if (delta != 6174 && delta != 0) {
System.out.println();
}
return delta;
}
}
C++
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
vector<int> get(int n) {
int nums[4];
for (int i = 0; i < 4; i++) {
nums[i] = n % 10;
n /= 10;
}
sort(nums, nums + 4);
int a = 0;
for (int i = 0; i < 4; i++) a = a * 10 + nums[i];
reverse(nums, nums + 4);
int b = 0;
for (int i = 0; i < 4; i++) b = b * 10 + nums[i];
return {b, a};
}
int main() {
int n;
cin >> n;
do {
auto t = get(n);
printf("%04d - %04d = %04d\n", t[0], t[1], t[0] - t[1]);
n = t[0] - t[1];
} while (n && n != 6174);
return 0;
}
tvwenkyvxntmofjurxvzxnttkhpzzn