Informatică, întrebare adresată de Utilizator anonim, 8 ani în urmă

Î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ât 99 și mai mici decât 1.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

Răspunsuri la întrebare

Răspuns de lilisorSefa
1

Răspuns: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

#include <bits/stdc++.h>

using namespace std;

ifstream cin("produse.in");

ofstream cout("produse.out");

int n, m, cer, a[1001];

bool epuizat(int n){

   while(n > 99)

       n/=10;

   return (n % 10) % 2 == 1;

}

int pc(int n){

   while(n>9)

       n/=10;

   return n;

}

int main(){

   cin >> cer >> n;

   for(int i = 1; i <= n; ++i)

       cin >> a[i];

   if(cer == 1){

       int cnt1 = 0, cnt2 = 0;

       for(int i = 1; i <= n; ++i)

           if(epuizat(a[i]))

               cnt1++;

           else

               cnt2++;

       cout << cnt2 << ' ' << cnt1 << ' ';

   }

   else{

       sort(a + 1, a + n + 1);

       for(int i = 1; i <= 9; ++i){

           bool ok = false;

           for(int j = 1; j <= n; ++j)

               if(pc(a[j]) == i)

                   ok = true;

           if(ok){

               cout << i << ' ';

               for(int j = 1; j <= n; ++j)

                   if(pc(a[j]) == i)

                       cout << a[j] << ' ';

               cout << endl;

           }

       }

   }

   return 0;

}

Explicație:

Alte întrebări interesante