Cristian, elev în clasa a V-a, a primit o cutie cu N bomboane. Chiar dacă i-ar plăcea, știe că nu este indicat să le mănânce pe toate imediat. L-a întrebat pe tatăl său câte bomboane are voie să mănânce și acesta i-a răspuns că poate mânca doar un număr sănătos de bomboane. Cristian a fost nedumerit. Tatăl i-a explicat că un număr sănătos este un număr natural care poate fi modificat, până se obține o singură cifră, prin eliminarea celei mai mici cifre din el și înlocuirea fiecărei cifre rămase în număr cu diferența dintre valoarea ei și cifra minimă.
De exemplu, cifra minimă a numărului 3151 este 1 iar prin eliminarea ei din număr se obține 35, după care prin înlocuirea cifrelor rămase se obține 24 adică cifra 3 se înlocuiește cu cifra 2, cifra 5 cu 4, rezultând numărul 24; se continuă procedeul: cifra minimă a numărului 24 este 2 iar prin eliminarea ei din număr se obține 4, după care prin înlocuirea cifrei rămase se obține 2 moment în care a rămas o singură cifră. Așadar numărul sănătos obținut din 3151 este 2.
Ajutați-l pe Cristian să afle câte bomboane are voie să mănânce.
Cerința
Scrieţi un program care să citească numărul natural N şi care să determine:
a. cifra minimă din numărul N; (20% din punctaj)
b. numărul obținut după prima transformare a numărului N; (30% din punctaj)
c. numărul sănătos obținut din N. (50% din punctaj)
Date de intrare
Fișierul de intrare cifra2.in conține pe prima linie numărul natural N.
Date de ieșire
Fișierul de ieșire cifra2.out va conține cele trei valori cerute, fiecare pe câte un rând.
Restricții și precizări
10 ≤ N ≤ 1000000;- Testele vor conține doar numere
Ncare pot fi modificate conform cerinței.
Exemplu
cifra2.in
736191
cifra2.out
1 6258 2
Explicație
a. cifra minimă este 1
b. 736191 → 7369 → 6258
c. 6258 → 658 → 436, se continuă 436 → 46 → 13, se continuă 13 → 3 → 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 cifra2:
#include <fstream>
using namespace std;
ifstream fin("cifra2.in");
ofstream fout("cifra2.out");
int main()
{
int N,copN,cmin,p;
fin>>N;
cmin=9;
copN=N;
while(copN)
{
if(copN%10<cmin)
cmin=copN%10;
copN=copN/10;
}
fout<<cmin<<'\n';
copN=N;
p=1;
N=0;
while(copN)
{
if(copN%10!=cmin)
{
N=N+(copN%10-cmin)*p;
p=p*10;
}
copN=copN/10;
}
fout<<N<<'\n';
while(N>9)
{
cmin=9;
copN=N;
while(copN)
{
if(copN%10<cmin)
cmin=copN%10;
copN=copN/10;
}
copN=N;
p=1;
N=0;
while(copN)
{
if(copN%10!=cmin)
{
N=N+(copN%10-cmin)*p;
p=p*10;
}
copN=copN/10;
}
}
fout<<N<<'\n';
fin.close();
fout.close();
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 #1984 cifra2
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1984 cifra2 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!