0409 - Oglindit 4: Difference between revisions

From Bitnami 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'...
 
No edit summary
Line 14: Line 14:
: 24 50 25 81 359
: 24 50 25 81 359
; Ieșire
; Ieșire
: Datele introduse corespund restricțiilor impuse.
: Datele de intrare corespund restricțiilor impuse.
: 1
: 1
== Explicație ==  
== Explicație ==  
Line 23: Line 23:
: 37 95 79 101 12 48
: 37 95 79 101 12 48
; Ieșire
; Ieșire
: Datele introduse corespund restricțiilor impuse.
: Datele de intrare corespund restricțiilor impuse.
: 3
: 3
== Explicație ==  
== Explicație ==  

Revision as of 10:33, 11 April 2023

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>