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!