2697 - Divizori Impari: Diferență între versiuni

De la Universitas MediaWiki
(Pagină nouă: == 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...)
 
 
(Nu s-au afișat 4 versiuni intermediare efectuate de același utilizator)
Linia 6: Linia 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
 
== Exemplu ==
== Exemplu ==
; 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
Linia 28: Linia 30:
     # Datele de intrare sunt valide
     # Datele de intrare sunt valide
     return True
     return True


if __name__ == '__main__':
if __name__ == '__main__':
Linia 39: Linia 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
Linia 48: Linia 49:
     else:
     else:
         print("Datele de intrare nu corespund restricțiilor impuse.")
         print("Datele de intrare nu corespund restricțiilor impuse.")


</syntaxhighlight>
</syntaxhighlight>

Versiunea curentă din 6 aprilie 2023 08:27

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.")