1. Description du titre
Spécification d'entrée:
Spécification de sortie:
Exemple d'entrée 1:
6767
Exemple de sortie 1:
7766 - 6677 = 1089
9810 - 0189 = 9621
9621 - 1269 = 8352
8532 - 2358 = 6174
Exemple d'entrée 2:
2222
Exemple de sortie 2:
2222 - 2222 = 0000
Deux idées de résolution de problèmes
Étant donné un nombre à quatre chiffres, réorganisez les chiffres de ce nombre du plus grand au plus petit et du plus petit au plus grand, puis réduisez le nombre du plus grand nombre, puis effectuez cette opération sur le résultat, et enfin obtenez le nombre 6174, mettons le milieu Sortie de processus. Mon idée ici est de stocker chaque chiffre dans un tableau, puis de trier de petit à grand, de traverser d'avant en arrière et d'arrière en avant, d'obtenir le grand nombre et le petit nombre, puis de les soustraire. Notez que si la différence entre les deux nombres est égale à 0, nous devons la sortir directement. Et pour le nombre 6174, nous devons également sortir le processus de calcul.
Trois, code AC
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
bool cmp(int a, int b)
{
return a > b;}
int cal(int num)
{
int digit[4], mxm = 0, mim = 0;
for(int i=3; i>=0; i--)
{
digit[i] = num%10;
num /= 10;
}
sort(digit, digit+4, cmp);
for(int i=0; i<4; i++)
mxm = mxm*10 + digit[i];
for(int i=3; i>=0; i--)
mim = mim*10 + digit[i];
int ans = mxm - mim;
printf("%04d - %04d = %04d\n", mxm, mim, ans);
return ans;
}
int main()
{
int num;
scanf("%d", &num);
if(num == 6174) cal(6174);
while(num != 6174)
{
num = cal(num);
if(num == 0) break;
}
return 0;
}