0996 - Div 3: Diferență între versiuni

De la Universitas MediaWiki
(Pagină nouă: <nowiki>== Cerință ==</nowiki> Pe prima linie a fişierului <code>div3.in</code> se află numărul <code>n</code>, iar pe a doua linie <code>n</code> numere naturale. <nowiki>== Date de intrare ==</nowiki> Pe prima linie a fişierului <code>div3.in</code> se află numărul <code>n</code>, iar pe a doua linie <code>n</code> numere naturale. <nowiki>== Date de ieșire ==</nowiki> Pe prima linie a fişierului <code>div3.out</code> se vor afla elementele şirului dat pentr...)
 
Fără descriere a modificării
 
(Nu s-au afișat 4 versiuni intermediare efectuate de alți 2 utilizatori)
Linia 1: Linia 1:
<nowiki>== Cerință ==</nowiki>
== Cerință ==
Pe prima linie a fişierului div3.in se află numărul '''n''', iar pe a doua linie '''n numere naturale'''.
== Date de intrare ==
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 ==
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."


Pe prima linie a fişierului <code>div3.in</code> se află numărul <code>n</code>, iar pe a doua linie <code>n</code> numere naturale.
== Restricții de precizări ==
*1 &les; '''n''' &les; 1000
*elementele şirului vor avea cel mult 9 cifre
== Exemplul 1==
; Intrare
: 7
: 124 51 231 7 24 31 5
; Ieșire
: Datele introduse corespund restricțiilor impuse.
: 51 231 24
== Exemplul 2 ==
; Intrare
: 5
: 124 51 abc 7 24
; Ieșire
: Datele introduse  nu corespund restricțiilor impuse.
== Rezolvare ver. 1 ==
<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


<nowiki>== Date de intrare ==</nowiki>


Pe prima linie a fişierului <code>div3.in</code> se află numărul <code>n</code>, iar pe a doua linie <code>n</code> numere naturale.
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


<nowiki>== Date de ieșire ==</nowiki>


Pe prima linie a fişierului <code>div3.out</code> se vor afla elementele şirului dat pentru care suma cifrelor este divizibilă cu <code>3</code>, separate printr-un spațiu.
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


<nowiki>== Restricții de precizări ==</nowiki>
    if validare(n, numere):
        n = int(n)  # Converteste n la integer
        numere = list(map(int, numere))  # Converteste lista de numere la integers


<nowiki>*</nowiki>1 <nowiki>&</nowiki>les; n <nowiki>&</nowiki>les; 1000
        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.")


<nowiki>*</nowiki>elementele şirului vor avea cel mult 9 cifre


<nowiki>== Exemplul 1==</nowiki>
</syntaxhighlight>
 
<nowiki>;</nowiki> Intrare
 
<nowiki>:</nowiki> 7
 
<nowiki>:</nowiki> 124 51 231 7 24 31 5
 
<nowiki>;</nowiki> Ieșire
 
<nowiki>:</nowiki> Datele introduse corespund restricțiilor impuse.
 
<nowiki>:</nowiki> 51 231 24
 
<nowiki>== Exemplul 2 ==</nowiki>
 
<nowiki>;</nowiki> Intrare
 
<nowiki>:</nowiki> 5
 
<nowiki>:</nowiki> 12 34 56 78 90
 
<nowiki>;</nowiki> Ieșire
 
<nowiki>:</nowiki> Datele introduse corespund restricțiilor impuse.
 
<nowiki>:</nowiki> 12 90
 
<nowiki>== Rezolvare ver. 1 ==</nowiki>

Versiunea curentă din 26 aprilie 2023 13:14

Cerință

Pe prima linie a fişierului div3.in se află numărul n, iar pe a doua linie n numere naturale.

Date de intrare

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

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

  • 1 ⩽ n ⩽ 1000
  • elementele şirului vor avea cel mult 9 cifre

Exemplul 1

Intrare
7
124 51 231 7 24 31 5
Ieșire
Datele introduse corespund restricțiilor impuse.
51 231 24

Exemplul 2

Intrare
5
124 51 abc 7 24
Ieșire
Datele introduse nu corespund restricțiilor impuse.

Rezolvare ver. 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.")