1669 - Palindrom Prim Norocoase
Cerinţa
Se dau n numere naturale. Aflaţi câte dintre ele sunt palindrom prim norocoase. Un număr este palindrom prim norocos dacă este palindrom (egal cu răsturnatul său, de exemplu 121), prim (are exact 2 divizori, de exemplu 3) şi norocos (pătratul numărului se poate scrie ca sumă de numere consecutive, exemplu 3. 3 * 3 = 9 = 2 + 3 + 4).
Date de intrare
Se va citi de la tastatura numărul n si n numere naturale separate prin spații.
Date de ieşire
Se va afisa numarul de numere care respecta condițiile. Dacă datele sunt introduse corect,pe ecran se va afișa :"Datele sunt introduse corect.",apoi pe un rând nou numarul de numere care respecta condițiile.În cazul contrar,se va afișa pe ecran "Datele nu corespund restricțiilor impuse.".
Restricții și precizări
- 0 ⩽ n ⩽ 1000
- cele n numere vor fi mai mici decât 2.000.000.000.
Exemplu
- Intrare
- 6
- 2 3 5 7 11 24
- Ieșire
- Datele sunt introduse corect.
- 4
Explicație
Sunt 6 numere, dintre care doar 4 respectă condițiile: 3, 5, 7 şi 11.
Rezolvare
#Verificăm dacă datele introduse corespund restricțiilor impuse
def validare_date_numar(numar):
flag = False
if numar.isdigit():
if 0 <= int(numar) <= 2_000_000_000:
flag = True
return flag
def validare_date_numere(n):
flag = False
if 0 <= int(n) <= 1000:
flag = True
return flag
#Verificăm dacă numarul introdus este prim
def prim(n):
cnt = 0
for i in range(1, int(n ** 0.5) + 1):
if n % i == 0:
cnt += 2
if i * i == n:
cnt -= 1
if cnt == 2:
return 1
else:
return 0
#Verificăm dacă numarul introdus este palindrom,adică dacă este egal cu oglinditul său
def pal(n):
ogl = 0
cn = n
while n:
ogl = ogl * 10 + n % 10
n //= 10
if ogl == cn:
return 1
else:
return 0
if __name__ == '__main__':
n = input()
if validare_date_numar(n):#Dacă datele introduse sunt corecte
n = int(n)
numere = input().split()
if validare_date_numere(n):
print("\nDatele sunt introduse corect.\n")#Afișăm mesajul corespunzator
cnt = 0
for i in range(n):
if pal(int(numere[i])) and prim(int(numere[i])) and int(numere[i]) % 2 == 1:#Verificăm câte numere sunt palindrom prim norocoase
cnt += 1
print( cnt)
else:
print("Datele nu corespund restricțiilor impuse.")
else:
print("Datele nu corespund restricțiilor impuse.")