0276 - PareImpare
Sursa: -PareImpare
Cerinţa
Se dau cel mult 100.000 de numere naturale, cu cel mult 2 cifre fiecare. Afişaţi în ordine strict crescătoare valorile impare care se regăsesc printre valorile date, şi în ordine strict descrescătoare valorile pare care se regăsesc printre valorile date.
Date de intrare
Fişierul de intrare pareimpare.in conţine cel mult 100.000 de numere naturale, cu cel mult 2 cifre fiecare, dispuse pe mai multe linii şi separate prin spaţii.
Date de ieșire
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte.", iar apoi in fişierul de ieşire pareimpare.out va conţine pe prima linie şirul valorilor impare, separate printr-un spaţiu, iar pe a doua linie şirul valorilor pare, separate printr-un spaţiu. În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.".
Restricţii şi precizări
- în fişierul de intrare se află cel puţin un număr par şi cel puţin un număr impar
Exemple
Exemplul 1
- pareimpare.in
- 75 12 3 3 18 75 1 3
- Ieșire
- Datele sunt corecte.
- pareimpare.out
- 1 3 75
- 18 12
Exemplul 2
- pareimpare.in
- 10 11 42 45 79
- Ieșire
- Datele sunt corecte.
- pareimpare.out
- 11 45 79
- 42 10
Exemplul 3
- pareimpare.in
- 75 77 71 99
- Ieșire
- Datele nu sunt comform restricțiilor impuse.
Rezolvare
<syntaxhighlight lang="python" line>
- 0276 PareImpare
def pareimpare(vector_pare, vector_impare):
f = open("pareimpare.out", "w") vector_impare.sort() vector_pare.sort(reverse=True) vector_impare.append(0) vector_pare.append(1) for i in range(len(vector_impare) - 1): if vector_impare[i] != vector_impare[i + 1]: f.write(str(vector_impare[i])) f.write(" ") f.write("\n") for i in range(len(vector_pare) - 1): if vector_impare[i] != vector_pare[i + 1]: f.write(str(vector_pare[i])) f.write(" ")
def conform_restrictiilor():
vector = list() vector_pare = list() vector_impare = list() with open('pareimpare.in') as f: lines = f.readlines() for line in lines: for c in line.split(): if c.isdigit() == True: vector.append(int(c)) if len(vector) > 100000: print("Datele nu sunt comform restricțiilor impuse.") exit() for x in vector: if x < 0 or x >= 100: print("Datele nu sunt comform restricțiilor impuse.") exit() elif x % 2 == 0: vector_pare.append(x) else: vector_impare.append(x) if len(vector_pare) == 0 or len(vector_impare) == 0: print("Datele nu sunt comform restricțiilor impuse.") exit() print("Datele sunt corecte.") return vector_pare, vector_impare
if __name__ == '__main__':
vector_pare, vector_impare = conform_restrictiilor() pareimpare(vector_pare, vector_impare)
</syntaxhighlight>