3502 - Hard Prime: Difference between revisions
No edit summary |
|||
Line 1: | Line 1: | ||
== Cerința == | == Cerința == | ||
Se dau n numere naturale. Să se afișeze toate numerele prime distincte dintre acestea in ordine crescătoare. | Se dau '''n''' numere naturale. Să se afișeze toate numerele prime distincte dintre acestea in ordine crescătoare. | ||
== Date de intrare == | == Date de intrare == | ||
Fișierul de intrare hardprimein.txt conține pe prima linie numărul n, iar pe a doua linie n numere naturale separate prin spații. | Fișierul de intrare '''hardprimein.txt''' conține pe prima linie numărul '''n''', iar pe a doua linie '''n''' numere naturale separate prin spații. | ||
== Date de ieșire == | == Date de ieșire == | ||
Fișierul de ieșire hardprimeout.txt va conține pe prima linie toate numerele prime distincte citite, în ordine crescătoare, separate prin câte un spațiu. | Fișierul de ieșire '''hardprimeout.txt''' va conține pe prima linie toate numerele prime distincte citite, în ordine crescătoare, separate prin câte un spațiu. | ||
== Restricții și precizări == | == Restricții și precizări == | ||
*1 ⩽ n ⩽ 30.000 | *'''1 ⩽ n ⩽ 30.000''' | ||
*numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât 2.000.000.000 | *numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât '''2.000.000.000''' | ||
== Exemplu 1 == | == Exemplu 1 == | ||
;hardprimein.txt | ;'''hardprimein.txt''' | ||
:10 | :10 | ||
:3 2 32 47 3 0 2 40 7 1 | :3 2 32 47 3 0 2 40 7 1 | ||
;hardprimeout.txt | ;'''hardprimeout.txt''' | ||
:2 3 7 47 | :2 3 7 47 | ||
== Explicație == | |||
'''2, 3, 7''' și '''47''' sunt singurele numere prime din fișierul de intrare. | |||
== Exemplu 2 == | == Exemplu 2 == | ||
;hardprimein.txt | ;'''hardprimein.txt''' | ||
:0 | :0 | ||
;hardprimeout.txt | ;'''hardprimeout.txt''' | ||
:Nu au fost respectate cerintele impuse | :Nu au fost respectate cerintele impuse | ||
<br> | <br> | ||
Line 49: | Line 48: | ||
numbers = list(map(int, file.readline().split())) | numbers = list(map(int, file.readline().split())) | ||
except FileNotFoundError: | except FileNotFoundError: | ||
with open("hardprimeout.txt", "w") as file_out: | |||
file_out.write("Nu au fost respectate cerintele impuse!") | |||
exit() | exit() | ||
# Verificare daca sunt respectate cerintele | # Verificare daca sunt respectate cerintele | ||
if not check_restrictions(n, numbers): | if not check_restrictions(n, numbers): | ||
with open("hardprimeout.txt", "w") as file_out: | |||
file_out.write("Nu au fost respectate cerintele impuse!") | |||
exit() | exit() | ||
Latest revision as of 14:23, 5 January 2024
Cerința[edit | edit source]
Se dau n numere naturale. Să se afișeze toate numerele prime distincte dintre acestea in ordine crescătoare.
Date de intrare[edit | edit source]
Fișierul de intrare hardprimein.txt conține pe prima linie numărul n, iar pe a doua linie n numere naturale separate prin spații.
Date de ieșire[edit | edit source]
Fișierul de ieșire hardprimeout.txt va conține pe prima linie toate numerele prime distincte citite, în ordine crescătoare, separate prin câte un spațiu.
Restricții și precizări[edit | edit source]
- 1 ⩽ n ⩽ 30.000
- numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât 2.000.000.000
Exemplu 1[edit | edit source]
- hardprimein.txt
- 10
- 3 2 32 47 3 0 2 40 7 1
- hardprimeout.txt
- 2 3 7 47
Explicație[edit | edit source]
2, 3, 7 și 47 sunt singurele numere prime din fișierul de intrare.
Exemplu 2[edit | edit source]
- hardprimein.txt
- 0
- hardprimeout.txt
- Nu au fost respectate cerintele impuse
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 3502 - HardPrime
def check_restrictions(n, numbers):
if not (1 <= n <= 30000): return False
if not all(0 <= num < 2000000000 for num in numbers): return False
return True
def is_prime(num):
if num < 2: return False for i in range(2, int(num**0.5) + 1): if num % i == 0: return False return True
- Citire date de intrare
try:
with open("hardprimein.txt", "r") as file: n = int(file.readline().strip()) numbers = list(map(int, file.readline().split()))
except FileNotFoundError:
with open("hardprimeout.txt", "w") as file_out: file_out.write("Nu au fost respectate cerintele impuse!") exit()
- Verificare daca sunt respectate cerintele
if not check_restrictions(n, numbers):
with open("hardprimeout.txt", "w") as file_out: file_out.write("Nu au fost respectate cerintele impuse!") exit()
- Identificare și afișare numere prime distincte în ordine crescătoare
prime_numbers = sorted(set(num for num in numbers if is_prime(num)))
- Scriere rezultat în fișierul de ieșire
with open("hardprimeout.txt", "w") as file:
file.write(" ".join(map(str, prime_numbers)) + "\n")
</syntaxhighlight>