1669 - Palindrom Prim Norocoase: Diferență între versiuni
(Pagină nouă: == 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 '''...) |
Fără descriere a modificării |
||
Linia 2: | Linia 2: | ||
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'''). | 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 == | == Date de intrare == | ||
Se va citi de la tastatura numărul ''' | Se va citi de la tastatura numărul '''n''' si '''n''' numere naturale separate prin spații. | ||
== Date de ieşire == | == Date de ieşire == | ||
Se va afisa numarul de numere care respecta | 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 == | == Restricții și precizări == | ||
* 0 ⩽ | * 0 ⩽ n ⩽ 1000 | ||
* | * cele n numere vor fi mai mici decât 2.000.000.000. | ||
== Exemplu == | == Exemplu == | ||
; Intrare | ; Intrare | ||
Linia 13: | Linia 14: | ||
: 2 3 5 7 11 24 | : 2 3 5 7 11 24 | ||
; Ieșire | ; Ieșire | ||
: Datele introduse | : Datele sunt introduse corect. | ||
: 4 | : 4 | ||
== Explicație == | == Explicație == | ||
Linia 19: | Linia 20: | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
#Verificăm dacă datele introduse corespund restricțiilor impuse | |||
def validare_date_numar(numar): | def validare_date_numar(numar): | ||
flag = False | flag = False | ||
Linia 31: | Linia 33: | ||
flag = True | flag = True | ||
return flag | return flag | ||
#Verificăm dacă numarul introdus este prim | |||
def prim(n): | def prim(n): | ||
cnt = 0 | cnt = 0 | ||
Linia 43: | Linia 45: | ||
else: | else: | ||
return 0 | return 0 | ||
#Verificăm dacă numarul introdus este palindrom,adică dacă este egal cu oglinditul său | |||
def pal(n): | def pal(n): | ||
ogl = 0 | ogl = 0 | ||
Linia 56: | Linia 58: | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
n = input( | n = input() | ||
if validare_date_numar(n): | if validare_date_numar(n):#Dacă datele introduse sunt corecte | ||
n = int(n) | n = int(n) | ||
numere = input( | numere = input().split() | ||
if validare_date_numere(n): | if validare_date_numere(n): | ||
print("\nDatele | print("\nDatele sunt introduse corect.\n")#Afișăm mesajul corespunzator | ||
cnt = 0 | cnt = 0 | ||
for i in range(n): | for i in range(n): | ||
if pal(int(numere[i])) and prim(int(numere[i])) and int(numere[i]) % 2 == 1: | 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 | cnt += 1 | ||
print( | print( cnt) | ||
else: | else: | ||
print("Datele | print("Datele nu corespund restricțiilor impuse.") | ||
else: | else: | ||
print("Datele | print("Datele nu corespund restricțiilor impuse.") | ||
</syntaxhighlight> | </syntaxhighlight> |
Versiunea curentă din 11 aprilie 2023 16:36
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.")