În baza de date a unui magazin online există n
produse. Fiecare are un cod numeric, alcătuit din cel mult nouă cifre, cu următoarea semnificație:
- prima cifră reprezintă categoria produsului;
- a doua cifră reprezintă starea produsului – pară pentru produsele existente pe stoc și impară pentru cele cu stoc epuizat;
- restul cifrelor din cod reprezintă identificatorul produsului.
Cerința
Se dau cele n
coduri ale produselor din baza de date.
1) Determinați câte produse există pe stoc și câte au stoc epuizat.
2) Pentru fiecare categorie, determinați lista produselor, în ordinea crescătoare a codurilor numerice.
Date de intrare
Fișierul de intrare produse.in
conține pe prima linie numerele c n
, iar pe a doua linie n
numere naturale, separate prin spații, reprezentând codurile produselor.
Date de ieșire
Dacă c=1
, fișierul de ieșire produse.out
va conține pe prima linie numerele S E
, separate printr-un un spațiu, reprezentând numărul de produse existente pe stoc, respectiv numărul de produse cu stoc epuizat.
Dacă c=2
, fișierul de ieșire produse.out
va conține mai multe linii, câte una pentru fiecare categorie de produs, în ordinea crescătoare a acestora. Fiecare linie începe cu categoria, urmată de un spațiu, apoi de codurile produselor din acea categorie, în ordine crescătoare, separate și ele prin câte un spațiu.
Restricții și precizări
1 ≤ n ≤ 1000
;- cele
n
coduri vor fi mai mari decât99
și mai mici decât1.000.000.000
; - pentru 30% din teste,
c=1
.
Exemplul 1
produse.in
1 5 15123 24897 4217 142 2736
produse.out
3 2
Explicație
Produsele existente pe stoc au codurile 24897 4217 142
, iar cele cu stoc epuizat au codurile 15123 2736
.
Exemplul 2
produse.in
2 5 15123 24897 4217 142 2736
produse.out
1 142 15123 2 2736 24897 4 4217
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 Produse:
#include <fstream>
#include <iostream>
#include <cmath>
using namespace std;
ifstream fin("produse.in");
ofstream fout("produse.out");
int n , V[1001], P[1001] , c, F[10];
int main()
{
fin >> c >> n;
for(int i =1 ; i <= n ; i ++)
fin >> V[i];
if(c == 1)
{
int S = 0, E = 0;
for(int i = 1 ; i <= n ; i ++)
{
int x = V[i];
while(x > 99)
x /= 10;
if(x % 2 == 0)
S ++;
else
E ++;
}
fout << S << " " << E << "
";
}
else
{
for(int i = 1 ; i <= n ; i ++)
{
int x = V[i];
while(x > 9)
x /= 10;
F[x] ++;
P[i] = x;
}
for(int i = 1 ; i < n ; i ++)
for(int j = i + 1 ; j <= n ; j ++)
if(P[i] > P[j])
{
swap(P[i], P[j]);
swap(V[i], V[j]);
}
else
if(P[i] == P[j])
if(V[i] > V[j])
swap(V[i], V[j]);
for(int i = 1; i < 10 ; i ++)
if(F[i])
{
fout << i << " ";
for(int j = 1 ; j <= n ; j ++)
if(P[j] == i)
fout << V[j] << " ";
fout << "
";
}
}
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 #3403 Produse
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #3403 Produse 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!