0409 - Oglindit 4: Diferență între versiuni
De la Universitas MediaWiki
(Pagină nouă: == Cerinţa == Se dau '''n''' numere naturale. Determinați câte dintre ele au proprietatea că sunt prime cu oglinditul lor. == Date de intrare == Programul citește de la tastatură numărul '''n''', iar apoi '''n''' numere naturale, separate prin spaţii. == Date de ieşire == Programul afișează pe ecran numărul '''suma_perechi_oglindite''', reprezentând valoarea ceruta. == Restricții și precizări == * n ∈ Ν * 1 ⩽ numar1, numar2 ⩽ 1.000 * cele '''n'...) |
Fără descriere a modificării |
||
Linia 14: | Linia 14: | ||
: 24 50 25 81 359 | : 24 50 25 81 359 | ||
; Ieșire | ; Ieșire | ||
: Datele | : Datele de intrare corespund restricțiilor impuse. | ||
: 1 | : 1 | ||
== Explicație == | == Explicație == | ||
Linia 23: | Linia 23: | ||
: 37 95 79 101 12 48 | : 37 95 79 101 12 48 | ||
; Ieșire | ; Ieșire | ||
: Datele | : Datele de intrare corespund restricțiilor impuse. | ||
: 3 | : 3 | ||
== Explicație == | == Explicație == |
Versiunea de la data 11 aprilie 2023 10:33
Cerinţa
Se dau n numere naturale. Determinați câte dintre ele au proprietatea că sunt prime cu oglinditul lor.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spaţii.
Date de ieşire
Programul afișează pe ecran numărul suma_perechi_oglindite, reprezentând valoarea ceruta.
Restricții și precizări
- n ∈ Ν
- 1 ⩽ numar1, numar2 ⩽ 1.000
- cele n numere citite vor fi mai mici decât 1.000.000.000
Exemplu1
- Intrare
- 5
- 24 50 25 81 359
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 1
Explicație
Numărul care este prim cu oglinditul lui este 359 (prim cu 953).
Exemplu2
- Intrare
- 6
- 37 95 79 101 12 48
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 3
Explicație
Numerele care sunt prime cu oglinditul lor sunt 37 (prim cu 73), 79 (prim cu 997) și 101 (prim cu 101).
Rezolvare
def validare_date(numar, numere):
flag = False
if 0 <= int(numar) <= 1000:
flag = all(isinstance(x, int) and 1 <= x <= 1000000000 for x in numere)
return flag
def oglindit(nr):
ogl = 0
while nr:
ogl = ogl * 10 + nr % 10
nr //= 10
return ogl
def este_prim(n):
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
if __name__ == '__main__':
n = int(input())
numere = list(map(int, input().split()))
if validare_date(n, numere):
print("\nDatele de intrare corespund restricțiilor impuse.\n")
oglindite = [oglindit(nr) for nr in numere]
suma_perechi_oglindite = [(nr, ogl) for nr, ogl in zip(numere, oglindite)
if este_prim(nr) and este_prim(ogl)]
print(len(suma_perechi_oglindite))
else:
print("Datele de intrare nu corespund restricțiilor impuse.")