2271 - Prod Max 1

De la Universitas MediaWiki
Versiunea din 15 decembrie 2023 14:10, autor: Andrada378 (discuție | contribuții) (Pagină nouă: Cerinta Se dă un șir cu n numere întregi. Determinați cel mai mare număr care poate fi scris ca produs de două elemente ale șirului. Date de intrare Programul citește de la tastatură numărul n, iar apoi cele n elemente ale șirului. Date de iesire Programul va afisa pe ecran numarul determinat P Restrictii si precizari 2 ≤ n ≤ 100.000 elementele șirului vor fi cuprinse în intervalul (-1.000.000, 1.000.000) Exemplu Intrare 7 -8 3 9 -1 -2 7 -10 Ies...)
(dif) ← Versiunea anterioară | Versiunea curentă (dif) | Versiunea următoare → (dif)

Cerinta

Se dă un șir cu n numere întregi. Determinați cel mai mare număr care poate fi scris ca produs de două elemente ale șirului.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi cele n elemente ale șirului.

Date de iesire

Programul va afisa pe ecran numarul determinat P

Restrictii si precizari

2 ≤ n ≤ 100.000

elementele șirului vor fi cuprinse în intervalul (-1.000.000, 1.000.000)

Exemplu

Intrare

7

-8 3 9 -1 -2 7 -10

Iesire

80

Rezolvare:

def cel_mai_mare_produs(n, sir):

    max1 = max2 = float('-inf') # inițializam la -inf (negativ infinit) pentru a asigura că, în timpul parcurgerii șirului,

    # orice număr întreg va fi mai mare decât aceste valori iniția

    min1 = min2 = float('inf') # inițializam la inf (infinit)

    # pentru a garanta că orice număr întreg va fi mai mic decât aceste valori inițiale.

    for numar in sir:

        if numar > max1:

            max2 = max1

            max1 = numar

        elif numar > max2:

            max2 = numar

        if numar < min1:

            min2 = min1

            min1 = numar

        elif numar < min2:

            min2 = numar

    return max(max1 * max2, min1 * min2)  # Alegem cel mai mare produs între maximele și minimele

def main():

    n = int(input("Introduceți numărul de elemente din șir: "))

    sir = list(map(int, input("Introduceți elementele șirului separate prin spațiu: ").split()))

    if n >= 2:

        rezultat = cel_mai_mare_produs(n, sir)

        print("Cel mai mare număr care poate fi scris ca produs de două elemente din șir:", rezultat)

    else:

        print("Introduceți cel puțin două numere în șir!")

if __name__ == "__main__":

    main()