0570 - Divizori: Difference between revisions
Pagină nouă: == Cerința == Se dă un număr natural nenul '''nr'''. Să se construiască un șir strict crescător de lungime maximă '''divizori[i]''' cu proprietatea că: * fiecare element al șirului este divizor al lui '''nr''' * '''divizori[i]''' este divizor al lui '''divizori[i+1]''' == Date de intrare == Programul citește de la tastatură numărul '''nr'''. == Date de ieșire == Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse". În următorul... |
No edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 11: | Line 11: | ||
În următorul rând se va afișa pe ecran elementele șirului construit. | În următorul rând se va afișa pe ecran elementele șirului construit. | ||
În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul " | În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Nu au fost respectate cerintele impuse". | ||
== Restricții și precizări == | == Restricții și precizări == | ||
* 1 ⩽ '''nr''' ⩽ 1000000000 | * 1 ⩽ '''nr''' ⩽ 1000000000 | ||
* dacă există mai multe șiruri de lungime maximă care respectă condițiile, se poate afișa oricare | |||
== Exemplu 1 == | == Exemplu 1 == | ||
; Intrare | ; Intrare | ||
Line 44: | Line 45: | ||
divizori = [] | divizori = [] | ||
# Aflam divizori lui nr si ii punem in lista | |||
while i*i <= nr: | while i*i <= nr: | ||
if nr % i == 0: | if nr % i == 0: | ||
Line 51: | Line 53: | ||
i += 1 | i += 1 | ||
# Dupa ce i-am aflat ii sortam | |||
divizori.sort() | divizori.sort() | ||
temp = 1 | temp = 1 | ||
# Verificam ca divizori[i] este divizor al lui divizori[i+1] | |||
for divizor in divizori: | for divizor in divizori: | ||
if divizor % temp == 0: | if divizor % temp == 0: |
Latest revision as of 11:15, 23 May 2023
Cerința[edit | edit source]
Se dă un număr natural nenul nr. Să se construiască un șir strict crescător de lungime maximă divizori[i] cu proprietatea că:
- fiecare element al șirului este divizor al lui nr
- divizori[i] este divizor al lui divizori[i+1]
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul nr.
Date de ieșire[edit | edit source]
Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse". În următorul rând se va afișa pe ecran elementele șirului construit.
În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Nu au fost respectate cerintele impuse".
Restricții și precizări[edit | edit source]
- 1 ⩽ nr ⩽ 1000000000
- dacă există mai multe șiruri de lungime maximă care respectă condițiile, se poate afișa oricare
Exemplu 1[edit | edit source]
- Intrare
- 12
- Ieșire
- Datele de intrare corespund restricțiilor impuse
- 1
- 2
- 4
- 12
Exemplu 2[edit | edit source]
- Intrare
- 0
- Ieșire
- Nu au fost respectate cerintele impuse
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 0570 - Divizori
def validare(nr):
# Daca datele sunt invalide v-om face raise la eroarea ValueError
if not (nr >= 1 and nr <= 1000000000): raise ValueError
def divizori(nr):
i = 1 divizori = []
# Aflam divizori lui nr si ii punem in lista while i*i <= nr: if nr % i == 0: divizori.append(i) if i*i != nr: divizori.append(nr // i) i += 1
# Dupa ce i-am aflat ii sortam divizori.sort() temp = 1
# Verificam ca divizori[i] este divizor al lui divizori[i+1] for divizor in divizori: if divizor % temp == 0: print(divizor) temp = divizor
if __name__ == '__main__':
nr = int(input())
try: validare(nr) except ValueError: print("Nu au fost respectate cerintele impuse") else: print("Datele de intrare corespund restricțiilor impuse")
divizori(nr)
</syntaxhighlight>