0409 - Oglindit 4
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
<syntaxhighlight lang="python" line> 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.")
</syntaxhighlight>
Explicație
Programul citește de la tastatură un număr întreg n și o listă de n numere întregi numere. Verifică dacă datele introduse respectă restricțiile impuse, adică 0 <= n <= 1000 și 1 <= numere[i] <= 10^9 pentru orice i între 0 și n-1. Dacă datele introduse sunt valide, atunci pentru fiecare număr întreg din lista numere se calculează numărul oglindit al acestuia (se inversează ordinea cifrelor). Pentru fiecare pereche de numere din lista numere și oglindite, se verifică dacă ambele numere din pereche sunt prime. Dacă ambele numere dintr-o pereche sunt prime, atunci perechea este inclusă într-o listă numită suma_perechi_oglindite. La final, se afișează numărul de perechi de numere prime din lista numere și oglindite.