Cerința
Valentin, elev în clasa a V-a, e fascinat de cifre. Îi place să mute cifrele unui număr de pe o poziție pe alta. Astfel, pentru un număr N
și o cifră k
, mută toate cifrele egale cu k
la început, după care așază celelalte cifre în ordinea în care apăreau în N
. Desigur, există și situații în care numărul cifrelor lui N
se micșorează sau situații în care numărul N
nu se modifică.
De exemplu, dacă numărul N
este 134112
și cifra k
este 1
, după mutarea cifrelor se obține 111342
.
Pornind de la numărul N
și cifra k
știți ce număr obține Valentin?
Scrieţi un program care să citească numărul natural N
şi cifra k
și care să determine:
a) de câte ori apare cifra k
în numărul N
; (30% din punctaj)
b) numărul obținut după modificarea numărului N
; (70% din punctaj)
Date de intrare
Pe prima linie a fișierului cifre006.in
se află numărul natural N
și cifra k
separate printr-un spațiu.
Date de ieșire
Fișierul de ieșire cifre006.out
va conține două valori, fiecare pe câte un rând. Prima valoare este numărul de cifre k
existente în N
, iar a doua valoare este numărul obținut din N
după modificare.
Restricții și precizări
1 ≤ N ≤ 1000000000
- numărul
N
după modificare poate avea cifre mai puține
Exemplu
cifre006.in
134112 1
cifre006.out
3 111342
Explicație
cifra 1
apare de 3
ori.
134112
→ 111342
, cele trei cifre 1
se mută la început iar cifrele 3
, 4
, 2
se pun la sfârșit în ordinea în care au apărut în 134112
.
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 cifre006:
#include <fstream>
using namespace std;
ifstream fin("cifre006.in");
ofstream fout("cifre006.out");
int N, k, cif, ap, p = 1, N1, N2;
int main()
{
fin >> N >> k;
while(N)
{
cif = N % 10;
if(cif == k)
{
ap++;
N1 = N1 * 10 + cif;
}
else
{
N2 = N2 + cif * p;
p = p * 10;
}
N = N / 10;
}
fout << ap << '\n' <<N1*p+N2;
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 #2442 cifre006
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2442 cifre006 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!