⬆︎
×

[PAT-A] 1069 The Black Hole of Numbers

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;
}

《[PAT-A] 1069 The Black Hole of Numbers》有1条评论

回复 ytqoxrqhmp 取消回复