3403 - Produse: Difference between revisions
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... |
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 | |||
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> |
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ât99
și mai mici decât1.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>