Elevii clasei pregătitoare se joacă la matematică cu numere. Învățătoarea are un săculeț plin cu jetoane, pe fiecare dintre ele fiind scrisă câte o cifră. Fiecare elev și-a ales din săculeț mai multe jetoane, cu care și-a format un număr. Pentru ca totul să fie mai interesant, elevii s-au grupat în perechi. Doamna învățătoare a oferit fiecărei perechi de elevi câte o cutiuță pentru ca cei doi să își pună împreună jetoanele. De exemplu, dacă unul din elevii unei echipe și-a ales jetoane cu care a format numărul 5137131
iar celălalt elev și-a ales jetoane cu care a format numărul 6551813
, atunci cutiuța echipei va conţine 5
jetoane cu cifra 1
, câte 3
jetoane cu cifra 3
şi 5
şi câte un jeton cu cifrele 6
, 7
şi 8
.
Doar Andrei stătea supărat pentru că numărul de elevi al clasei era impar iar el nu avea partener, motiv pentru care nu și-a mai ales jetoane. Din această cauză, doamna învățătoare i-a spus:
“- Alege o echipă din a cărei cutiuță poţi lua o parte din jetoane, dar ai grijă ca fiecare dintre cei doi elevi să-și mai poată forma numărul lui din jetoanele rămase, iar tu să poți forma un număr nenul cu jetoanele extrase!“.
Dar cum Andrei nu se mulţumea cu puţin, a vrut să aleagă acea echipă din a cărei cutiuță îşi poată forma un număr de valoare maximă folosind jetoanele extrase.
Cerința
Scrieţi un program care să citească numărul N
de cutiuțe și numerele formate de elevii fiecărei perechi și care să determine:
1) Numărul de cutiuțe din care Andrei poate lua jetoane respectând condiția pusă de doamna învățătoare;
2) Care este cel mai mare număr nenul pe care îl poate forma Andrei respectând aceeași condiție.
Date de intrare
Fișierul de intrare cifre10.in
conține pe prima linie numărul natural P
reprezentând cerința din problemă care trebuie rezolvată. Pe a doua linie numărul natural N
, iar pe următoarele N
linii câte două numere naturale separate printr-un spațiu reprezentând numerele formate de elevii fiecărei perechi.
Date de ieșire
- Dacă valoarea lui
P
este1
, fişierul de ieşirecifre10.out
va conţine pe prima linie un număr natural reprezentând rezolvarea primei cerințe, adică numărul de cutiuțe din care Andrei poate lua jetoane. - Dacă valoarea lui
P
este2
, fişierul de ieşirecifre10.out
va conţine pe prima linie un număr natural reprezentând rezolvarea celei de a doua cerințe, adică numărul maxim pe care îl poate forma Andrei.
Restricții și precizări
0 < N ≤ 10000
1 ≤
numărul de jetoane al fiecărui elev≤ 9
0 ≤
cifra scrisă pe orice jeton≤ 9
- Se garantează că există cel puţin o cutiuţă din care Andrei îşi poate forma număr nenul
- Pentru rezolvarea corectă a fiecărei cerinţe se obțin câte 50 de puncte
Exemplul 1
cifre10.in
1 3 1010 2000 12 34 1515 552
cifre10.out
1
Explicație
Cu jetoanele extrase din prima cutiuță Andrei nu poate forma un număr diferit de 0
. Din a doua cutiuță Andrei nu poate lua jetoane astfel încât cei doi elevi să își mai poată forma numerele 12
și 34
.
Andrei poate extrage jetoane doar din a treia cutiuță(două jetoane cu cifra 5
).
Exemplul 2
cifre10.in
2 5 16815 38861 12 385 5137131 6551813 15033 11583 4704 240
cifre10.out
5311
Explicație
Numărul maxim pe care Andrei îl poate forma este 5311
și se obține din cutiuța a treia.
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 Cifre10:
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("cifre10.in");
ofstream g("cifre10.out");
int a[10],b[10],n,i,x,y,j,k,p,cod,cate,maxim, minim;
int main()
{
f>>p>>n;
for(i=1;i<=n;i++)
{
f>>x>>y;
for(j=0;j<10;j++) a[j]=b[j]=0;
while(x) {a[x%10]++; x=x/10;}
while(y) {b[y%10]++; y=y/10;}
cod=0;
for(j=9;j>=0;j--)
if(a[j]>0 && b[j]>0)
{
if(a[j]<b[j]) minim=a[j]; else minim=b[j];
for(k=1;k<=minim;k++) cod=cod*10+j;
}
if(cod) cate++;
if(cod>maxim) maxim=cod;
}
if(p==1) g<<cate;
else g<<maxim;
g.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 #1612 Cifre10
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1612 Cifre10 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!