1694 - Norocos: Diferență între versiuni
Linia 30: | Linia 30: | ||
== Exemplul 1 == | == Exemplul 1 == | ||
; Intrare | ; Intrare | ||
: 4 | : 1 | ||
: 9 3 | |||
: 165 12 33 30 5 18 105 15 4 | |||
; Ieșire | ; Ieșire | ||
: | : 5 165 | ||
<br> | <br> | ||
== Rezolvare == | == Rezolvare == |
Versiunea de la data 2 aprilie 2023 20:23
Sursa: [1]
Cerinţa
Un număr natural nenul m se numește norocos dacă pătratul lui se poate scrie ca sumă de m numere naturale consecutive. Un număr natural m se numește k-norocos, dacă este egal cu produsul a exact k numere prime distincte. Observați că între cele două proprietăți definite nu există nicio legătură.
Dându-se k și N numere naturale, scrieți un program care să determine:
a) Cel mai mic și cel mai mare număr norocos dintre cele N numere citite b) Câte numere k-norocoase sunt în șirul de N numere citite
Date de intrare
Programul conține pe prima linie un număr natural C. Pentru toate testele de intrare, numărul C are una din valorile 1 sau 2. Pe linia a doua a programul se găsesc numerele naturale N și k, cu semnificația din enunț, iar pe a treia linie se găsesc N numere naturale, separate prin câte un spațiu.
Date de ieșire
Dacă C=1, se va rezolva numai punctul a). În acest caz, în program se vor scrie, separate printr-un spațiu, în această ordine, cel mai mic și cel mai mare număr norocos dintre cele N numere citite. Dacă nu există niciun număr norocos se va afișa valoarea 0. Dacă există un singur număr norocos, acesta se va afișa de două ori.
Dacă C=2, se va rezolva numai punctul b). În acest caz, program se va scrie un singur număr reprezentând numărul de numere k-norocoase citite.
Dacă datele sunt introduse corect, programul va rula.
În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse.".
Restricţii şi precizări
1 ≤ N ≤ 1000 2 ≤ k ≤ 30 1 ≤ numerele citite de pe a treia linie a programul ≤ 2 000 000 000
Pentru rezolvarea corectă a primei cerinţe se acordă 40 de puncte, pentru rezolvarea corectă a celei de-a doua cerințe se acordă 60 de puncte.
Exemplul 1
- Intrare
- 1
- 9 3
- 165 12 33 30 5 18 105 15 4
- Ieșire
- 5 165
Rezolvare
#4273
def patrate_perfecte(n):
patrate = []
i = 1
while len(patrate) < n:
patrat = i * i
patrate.append(patrat)
i += 1
return patrate
def calculeaza(numbers):
product = 1
for number in numbers:
product *= number
return product
def validare_numar(n):
if n < 1 or n > 10:
return False
return True
if __name__ == '__main__':
n = int(input("Introduceți numărul n: "))
if not validare_numar(n):
print("Datele introduse nu corespund cerintelor.")
else:
squares = patrate_perfecte(n)
product = calculeaza(squares)
print("Datele introduse corespund cerintelor.")
print(product)