Maison  >  Article  >  Java  >  Exemple d'implémentation d'un trou noir numérique en Java

Exemple d'implémentation d'un trou noir numérique en Java

黄舟
黄舟original
2017-09-14 10:12:171558parcourir

Cet article présente principalement comment implémenter le jeu d'algorithme de trou noir numérique dans la programmation Java, ce qui implique des connaissances de base en programmation Java telles que les tableaux, les scanners, les instructions if, etc. Les amis dans le besoin peuvent se référer à

Étant donné n'importe quel Pour un entier positif à 4 chiffres avec des chiffres différents, si nous trions d'abord les 4 nombres de manière non croissante, puis de manière non décroissante, puis soustrayons le deuxième nombre du premier nombre, nous obtiendrons un nouveau nombre. Si nous continuons à répéter cette opération, nous nous arrêterons bientôt à 6174, connu sous le nom de « trou noir numérique ». Ce nombre magique est également appelé constante de Kaprekar.

Par exemple, on part de 6767, on obtiendra

7766 - 6677 = 1089
9810 - 0189 = 9621
9621 - 1269 = 8352
8532 - 2358 = 6174
7641 - 1467 = 6174

Étant donné un entier positif à 4 chiffres, veuillez écrire un programme pour démontrer le processus permettant d'atteindre le trou noir.

Format de saisie :

L'entrée donne un entier positif N dans l'intervalle (0, 10000).

Format de sortie :

Si les 4 chiffres de N sont tous égaux, affichez "N - N = 0000" sur une seule ligne sinon ; Affichez chaque étape du calcul sur une ligne jusqu'à ce que 6174 apparaisse comme différence. Voir l'exemple pour le format de sortie. Notez que chaque numéro est affiché au format à 4 chiffres.

Échantillon d'entrée 1 :

6767

Échantillon de sortie 1 :

7766 - 6677 = 1089
9810 - 0189 = 9621
9621 - 1269 = 8352
8532 - 2358 = 6174

Échantillon d'entrée 2 :

2222

Échantillon de sortie 2 :

2222 - 2222 = 0000

Le code spécifique est le suivant :


import java.util.Arrays; 
import java.util.Scanner; 
public class Main { 
  public static void main(String args[]) { 
    Scanner sc = new Scanner(System.in); 
    int x = sc.nextInt(); 
    int ans = ds(x)-xs(x); 
    if(ans==0){ 
      System.out.printf("%04d - %04d = %04d\n",ds(x),xs(x),ans); 
    }else{ 
      int n ; 
      do{ 
        n = ds(x)-xs(x); 
        System.out.printf("%04d - %04d = %04d\n",ds(x),xs(x),n); 
        x = n; 
      }while(n!=6174); 
    } 
  } 
  public static int ds (int x){ 
    int[]a = new int[4]; 
    a[0] = x/1000; 
    a[1] = x/100%10; 
    a[2] = x/10%10; 
    a[3] = x%10; 
    Arrays.sort(a); 
    int sum = a[3]*1000+a[2]*100+a[1]*10+a[0]; 
    return sum; 
  } 
  public static int xs (int x){ 
    int[]a = new int[4]; 
    a[0] = x/1000; 
    a[1] = x/100%10; 
    a[2] = x/10%10; 
    a[3] = x%10; 
    Arrays.sort(a); 
    int sum = a[0]*1000+a[1]*100+a[2]*10+a[3]; 
    return sum; 
  } 
}

Le résultat est le suivant :


4695
9654 - 4569 = 5085
8550 - 0558 = 7992
9972 - 2799 = 7173
7731 - 1377 = 6354
6543 - 3456 = 3087
8730 - 0378 = 8352
8532 - 2358 = 6174

Résumé

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn