0273 - Ord Sume
Cerinţa[edit | edit source]
Se dă un şir cu n elemente, numere naturale. Să se afişeze, în ordine crescătoare, toate valorile distincte care se pot obţine ca sumă de două valori distincte din şir.
Date de intrare[edit | edit source]
Fişierul de intrare ordsumein.txt conţine pe prima linie numărul n, iar pe a doua cele n elemente ale şirului dat, separate prin spaţii.
Date de ieşire[edit | edit source]
Fişierul de ieşire ordsumeout.txt va conţine pe prima linie, în ordine crescătoare, toate valorile distincte care se pot obţine ca sumă de două valori distincte din şir, separate printr-un spaţiu.
Restricții și precizări[edit | edit source]
- 1 ≤ n ≤ 100
- numerele de pe a doua linie a fişierului de intrare vor avea cel mult 8 cifre
Exemplul 1[edit | edit source]
- ordsumein.txt
- 4
- 1 7 3 5
- ordsumeout.txt
Datele introduse corespund restricțiilor impuse.
- 4 6 8 10 12
Exemplul 2[edit | edit source]
- ordsumein.txt
- 3
- 1 2 123456789
- ordsumeout.txt
Datele introduse nu corespund restricțiilor impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 0273 - Ord Sume
def validare(n_validare, numere_validare): # functia de validare a datelor de intrare
if n_validare > 100 or n_validare < 1: raise ValueError
for numar in numere_validare: if not str(numar).isdigit() or len(str(numar)) > 8: # numărul trebuie să fie cifră cu maxim 8 cifre raise ValueError
fisier_iesire.write("Datele introduse corespund restrictiilor impuse\n")
def calculeaza_sume(n_calcul, numere_calculeaza): # functia de rezolvare
sume = {numere_calculeaza[i] + numere_calculeaza[j] for i in range(n_calcul) for j in range(i + 1, n_calcul)} fisier_iesire.write(' '.join(str(suma) for suma in sorted(sume)))
if __name__ == "__main__":
fisier_intrare = open("ordsumein.txt", "r") # declararea fisierelor fisier_iesire = open("ordsumeout.txt", "w") # fisierul out trebuie declarat cu optiunea "w" (write)
try: n = int(fisier_intrare.readline()) numere = [int(numar) for numar in fisier_intrare.readline().split()]
validare(n, numere) # apelul functiei de validare calculeaza_sume(n, numere) # apelul functiei de rezolvare
except ValueError: fisier_iesire.write("Datele introduse nu corespund restrictiilor impuse")
</syntaxhighlight>