0996 - Div 3: Difference between revisions
No edit summary |
No edit summary |
||
(2 intermediate revisions by 2 users not shown) | |||
Line 4: | Line 4: | ||
Pe prima linie a fişierului div3.in se află numărul '''n''', iar pe a doua linie '''n numere naturale'''. | Pe prima linie a fişierului div3.in se află numărul '''n''', iar pe a doua linie '''n numere naturale'''. | ||
== Date de ieșire == | == Date de ieșire == | ||
Pe prima linie a fişierului div3.out se vor afla elementele şirului dat pentru care suma cifrelor este divizibilă cu 3, separate printr-un spațiu. | Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." Pe prima linie a fişierului div3.out se vor afla elementele şirului dat pentru care suma cifrelor este divizibilă cu 3, separate printr-un spațiu. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse." | ||
== Restricții de precizări == | == Restricții de precizări == | ||
*1 ⩽ '''n''' ⩽ 1000 | *1 ⩽ '''n''' ⩽ 1000 | ||
Line 18: | Line 19: | ||
; Intrare | ; Intrare | ||
: 5 | : 5 | ||
: | : 124 51 abc 7 24 | ||
; Ieșire | ; Ieșire | ||
: Datele introduse corespund restricțiilor impuse. | : Datele introduse nu corespund restricțiilor impuse. | ||
== Rezolvare ver. 1 == | == Rezolvare ver. 1 == | ||
<syntaxhighlight lang="python" line="1" start="1"> | <syntaxhighlight lang="python" line="1" start="1"> | ||
def validare(n, numere): | def validare(n, numere): | ||
return all.isdigit() and 1 <= int(n | # Verifica daca datele de intrare sunt valide conform cerintei problemei. | ||
# Verifica daca n este un numar intreg pozitiv | |||
# si daca toate numerele din lista numere sunt numere intregi pozitive. | |||
return n.isdigit() and all(x.isdigit() for x in numere) and 1 <= int(n) <= 1000 | |||
def suma_cifre(n, numere): | def suma_cifre(n, numere): | ||
suma | # Calculeaza suma cifrelor pentru fiecare numar din lista numere, | ||
# si retine doar numerele pentru care suma cifrelor este divizibila cu 3. | |||
suma_div3 = [] | |||
for x in numere: | |||
if sum(int(d) for d in str(x)) % 3 == 0: | |||
suma_div3.append(x) | |||
for x in numere: | return suma_div3 | ||
if | |||
if __name__ == "__main__": | if __name__ == "__main__": | ||
n = | with open("div3.in", "r") as fin: | ||
n = fin.readline().strip() # Citeste numarul de elemente din sir | |||
numere = fin.readline().strip().split() # Citeste lista de numere | |||
if validare(n, numere): | if validare(n, numere): | ||
n = int(n) # Converteste n la integer | |||
numere = list(map(int, numere)) # Converteste lista de numere la integers | |||
print("Datele introduse corespund restricțiilor impuse.") | |||
suma_div3 = suma_cifre(n, numere) # Calculeaza suma_div3 | |||
with open("div3.out", "w") as fout: | |||
fout.write(" ".join(map(str, suma_div3))) # Scrie numerele in fisierul de iesire | |||
fout.write("\n") | |||
else: | |||
print("Datele introduse nu corespund restricțiilor impuse.") | |||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 13:14, 26 April 2023
Cerință[edit | edit source]
Pe prima linie a fişierului div3.in se află numărul n, iar pe a doua linie n numere naturale.
Date de intrare[edit | edit source]
Pe prima linie a fişierului div3.in se află numărul n, iar pe a doua linie n numere naturale.
Date de ieșire[edit | edit source]
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." Pe prima linie a fişierului div3.out se vor afla elementele şirului dat pentru care suma cifrelor este divizibilă cu 3, separate printr-un spațiu. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."
Restricții de precizări[edit | edit source]
- 1 ⩽ n ⩽ 1000
- elementele şirului vor avea cel mult 9 cifre
Exemplul 1[edit | edit source]
- Intrare
- 7
- 124 51 231 7 24 31 5
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 51 231 24
Exemplul 2[edit | edit source]
- Intrare
- 5
- 124 51 abc 7 24
- Ieșire
- Datele introduse nu corespund restricțiilor impuse.
Rezolvare ver. 1[edit | edit source]
<syntaxhighlight lang="python" line="1" start="1"> def validare(n, numere):
# Verifica daca datele de intrare sunt valide conform cerintei problemei. # Verifica daca n este un numar intreg pozitiv # si daca toate numerele din lista numere sunt numere intregi pozitive. return n.isdigit() and all(x.isdigit() for x in numere) and 1 <= int(n) <= 1000
def suma_cifre(n, numere):
# Calculeaza suma cifrelor pentru fiecare numar din lista numere, # si retine doar numerele pentru care suma cifrelor este divizibila cu 3. suma_div3 = [] for x in numere: if sum(int(d) for d in str(x)) % 3 == 0: suma_div3.append(x) return suma_div3
if __name__ == "__main__":
with open("div3.in", "r") as fin: n = fin.readline().strip() # Citeste numarul de elemente din sir numere = fin.readline().strip().split() # Citeste lista de numere
if validare(n, numere): n = int(n) # Converteste n la integer numere = list(map(int, numere)) # Converteste lista de numere la integers
print("Datele introduse corespund restricțiilor impuse.") suma_div3 = suma_cifre(n, numere) # Calculeaza suma_div3 with open("div3.out", "w") as fout: fout.write(" ".join(map(str, suma_div3))) # Scrie numerele in fisierul de iesire fout.write("\n") else: print("Datele introduse nu corespund restricțiilor impuse.")
</syntaxhighlight>