2697 - Divizori Impari
De la Universitas MediaWiki
Cerinţa
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
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.
Date de ieşire
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
- 1 ≤ n ≤ 10.000
- cele n numere citite vor avea cel mult 16 cifre și vor fi strict pozitive
Exemplu
- Intrare
- 5
- 88 25 14 1 6
- Ieșire
- 11 25 7 1 3
Rezolvare
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.")