2697 - Divizori Impari: Difference between revisions

From Bitnami MediaWiki
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'''
*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



Revision as of 08:23, 6 April 2023

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

<syntaxhighlight lang="python" line> def validare_date(n, nums):

   # Verificați dacă n se află în intervalul [1, 10^4]
   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 cei 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>