2697 - Divizori Impari: Difference between revisions
Diana Butuza (talk | contribs) |
Diana Butuza (talk | contribs) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 6: | Line 6: | ||
Programul va afișa pe ecran '''n''' numere naturale separate prin spații reprezentând cei mai mari divizori impari ai numerelor din șir. | Programul va afișa pe ecran '''n''' numere naturale separate prin spații reprezentând cei mai mari divizori impari ai numerelor din șir. | ||
== Restricții și precizări == | == Restricții și precizări == | ||
* | *1 ≤ n ≤ 10.000 | ||
*cele '''n''' numere citite vor avea cel mult '''16''' cifre și vor fi strict pozitive | *cele '''n''' numere citite vor avea cel mult '''16''' cifre și vor fi strict pozitive | ||
Line 12: | Line 12: | ||
; Intrare | ; Intrare | ||
:5 | :5 | ||
88 25 14 1 6 | :88 25 14 1 6 | ||
; Ieșire | ; Ieșire | ||
:11 25 7 1 3 | :11 25 7 1 3 | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
def validare_date(n, nums): | def validare_date(n, nums): | ||
# Verificați dacă n se află în intervalul [1, | # Verificați dacă n se află în intervalul [1, 10000] | ||
if n < 1 or n > 10000: | if n < 1 or n > 10000: | ||
return False | return False | ||
Line 29: | Line 30: | ||
# Datele de intrare sunt valide | # Datele de intrare sunt valide | ||
return True | return True | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
Line 40: | Line 40: | ||
print("\nDatele de intrare corespund restricțiilor impuse.\n") | print("\nDatele de intrare corespund restricțiilor impuse.\n") | ||
# Calcularea și afișarea | # Calcularea și afișarea celor mai mari divizori impari ai numerelor din șir | ||
for num in nums: | for num in nums: | ||
largest_odd_divisor = 1 | largest_odd_divisor = 1 | ||
Line 49: | Line 49: | ||
else: | else: | ||
print("Datele de intrare nu corespund restricțiilor impuse.") | print("Datele de intrare nu corespund restricțiilor impuse.") | ||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 08:27, 6 April 2023
Cerinţa[edit | edit source]
Se dă un șir de n numere naturale nenule. Determinați pentru fiecare număr din șir care este cel mai mare divizor impar al său.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.
Date de ieşire[edit | edit source]
Programul va afișa pe ecran n numere naturale separate prin spații reprezentând cei mai mari divizori impari ai numerelor din șir.
Restricții și precizări[edit | edit source]
- 1 ≤ n ≤ 10.000
- cele n numere citite vor avea cel mult 16 cifre și vor fi strict pozitive
Exemplu[edit | edit source]
- Intrare
- 5
- 88 25 14 1 6
- Ieșire
- 11 25 7 1 3
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line> def validare_date(n, nums):
# Verificați dacă n se află în intervalul [1, 10000] if n < 1 or n > 10000: return False
# Verificați dacă fiecare număr din șir este strict pozitiv și are cel mult 16 cifre for num in nums: if num <= 0 or num > 10**16: return False
# Datele de intrare sunt valide return True
if __name__ == '__main__':
# Citirea datelor de intrare n = int(input()) nums = list(map(int, input().split()))
# Validarea datelor de intrare if validare_date(n, nums): print("\nDatele de intrare corespund restricțiilor impuse.\n")
# Calcularea și afișarea celor mai mari divizori impari ai numerelor din șir for num in nums: largest_odd_divisor = 1 for i in range(1, num+1, 2): if num % i == 0: largest_odd_divisor = i print(largest_odd_divisor, end=' ') else: print("Datele de intrare nu corespund restricțiilor impuse.")
</syntaxhighlight>