3403 - Produse: Difference between revisions

From Bitnami MediaWiki
Raul (talk | contribs)
Pagină nouă: În baza de date a unui magazin online există <code>n</code> 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 <code>n</code> coduri ale produselor din...
 
Raul (talk | contribs)
No edit summary
 
Line 40: Line 40:


=== Lipește codul aici ===
=== Lipește codul aici ===
1
<syntaxhighlight lang="python" line="1">
​n, m, cer, a = 0, 0, 0, [0]*1001
​n, m, cer, a = 0, 0, 0, [0]*1001


def epuizat(n):
def epuizat(n):


    while n > 99:
    while n > 99:


        n /= 10
        n /= 10


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


def pc(n):
def pc(n):


    while n > 9:
    while n > 9:


        n /= 10
        n /= 10


    return n
    return n


cer, n = map(int, input().split())
cer, n = map(int, input().split())


for i in range(1, n+1):
for i in range(1, n+1):


    a[i] = int(input())
    a[i] = int(input())


if cer == 1:
if cer == 1:


    cnt1 = 0
    cnt1 = 0


    cnt2 = 0
    cnt2 = 0


    for i in range(1, n+1):
    for i in range(1, n+1):


        if epuizat(a[i]):
        if epuizat(a[i]):


            cnt1 += 1
            cnt1 += 1


        else:
        else:


            cnt2 += 1
            cnt2 += 1


    print(cnt2, cnt1, end=' ')
    print(cnt2, cnt1, end=' ')


else:
else:


    a = sorted(a[1:n+1])
    a = sorted(a[1:n+1])


    for i in range(1, 10):
    for i in range(1, 10):


        ok = False
        ok = False


        for j in range(1, n+1):
        for j in range(1, n+1):


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


                ok = True
                ok = True


        if ok:
        if ok:


            print(i, end=' ')
            print(i, end=' ')


            for j in range(1, n+1):
            for j in range(1, n+1):


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


                    print(a[j], end=' ')
                    print(a[j], end=' ')


            print()
            print()
 
</syntaxhighlight>

Latest revision as of 14:13, 14 December 2023

Î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[edit | edit source]

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[edit | edit source]

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[edit | edit source]

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[edit | edit source]

  • 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[edit | edit source]

produse.in

1 5
15123 24897 4217 142 2736

produse.out

3 2

Explicație[edit | edit source]

Produsele existente pe stoc au codurile 24897 4217 142, iar cele cu stoc epuizat au codurile 15123 2736.

Încărcare soluție[edit | edit source]

Lipește codul aici[edit | edit source]

<syntaxhighlight lang="python" line="1"> ​n, m, cer, a = 0, 0, 0, [0]*1001

def epuizat(n):

   while n > 99:
       n /= 10
   return (n % 10) % 2 == 1

def pc(n):

   while n > 9:
       n /= 10
   return n

cer, n = map(int, input().split())

for i in range(1, n+1):

   a[i] = int(input())

if cer == 1:

   cnt1 = 0
   cnt2 = 0
   for i in range(1, n+1):
       if epuizat(a[i]):
           cnt1 += 1
       else:
           cnt2 += 1
   print(cnt2, cnt1, end=' ')

else:

   a = sorted(a[1:n+1])
   for i in range(1, 10):
       ok = False
       for j in range(1, n+1):
           if pc(a[j]) == i:
               ok = True
       if ok:
           print(i, end=' ')
           for j in range(1, n+1):
               if pc(a[j]) == i:
                   print(a[j], end=' ')
           print()

</syntaxhighlight>