Cerința
În această problemă veţi primi două numere natural N
, şi K
. Definim magnitudinea unui număr ca fiind diferenţa dintre cifra maximă şi cifra minimă ale lui. De exemplu, magnitudinea lui 9748
este 9
– 4
= 5
.
Eliminaţi maxim K
cifre din numărul N
, astfel încât magnitudinea numărului obţinut să fie cât mai mică.
Date de intrare
În fișierul magnitudine.in
se află pe prima linie numerele N
si K
separate prin spaţii.
Date de ieșire
Afișați în fișierul magnitudine.out
magnitudinea minimă care se poate obţine după eliminarea a K
cifre ale lui N
.
Restricții și precizări
1 ≤ N ≤ 10
18
- pentru teste în valoare de 30 puncte,
K = 0
- pentru teste în valoare de 30 puncte,
K = 1
- pentru teste în valoare de 40 puncte,
K = 2
Exemplu 1:
magnitudine.in
9748 1
magnitudine.out
2
Explicație
Daca eliminam cifra 4
obtinem 978
cu magnitudine = 2
.
Exemplu 2:
magnitudine.in
90021 1
magnitudine.out
2
Explicație
Daca eliminam cifra 9
obtinem 0021
cu magnitudine = 2
.
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema magnitudine:
#include <stdio.h>
long long N, K;
long long cif[20], l;
int main() {
freopen("magnitudine.in", "rt", stdin);
freopen("magnitudine.out", "wt", stdout);
scanf("%lld %lld", &N, &K);
while (N) {
cif[l++] = N % 10;
N /= 10;
}
int rez = 9;
for (int elimin1 = 0; elimin1 < l; elimin1++) {
for (int elimin2 = 0; elimin2 < l; elimin2++) {
int min = 9, max = 0;
for (int i = 0; i < l; i++) {
if (K == 0 || // nu evit nimic
(K == 1 && i != elimin1) || // evit orice pozitie
(K == 2 && i != elimin1 && i != elimin2)) { // evit orice doua pozitii
if (min > cif[i]) {
min = cif[i];
}
if (max < cif[i]) {
max = cif[i];
}
}
}
if (rez > max - min) {
rez = max - min;
}
}
}
printf("%lld\n", rez);
fclose(stdout);
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #2298 magnitudine
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2298 magnitudine de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!