2697 - Divizori Impari: Difference between revisions

From Bitnami MediaWiki
 
(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'''
*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, 10^4]
     # 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 cei mai mari divizori impari ai numerelor din șir
         # 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>