Maison > Java > javaDidacticiel > le corps du texte

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

黄舟
Libérer: 2017-09-14 10:12:17
original
1610 Les gens l'ont consulté

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; 
  } 
}
Copier après la connexion

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
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal