2271 - Prod Max 1: Diferență între versiuni

De la Universitas MediaWiki
(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...)
 
Fără descriere a modificării
Linia 1: Linia 1:
Cerinta
== Cerința ==
 
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.
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
== Date de intrare ==
 
Programul citește de la tastatură numărul n, iar apoi cele n elemente ale șirului.
Programul citește de la tastatură numărul n, iar apoi cele n elemente ale șirului.


Date de iesire
== Date de iesire ==
 
Programul va afisa pe ecran numarul determinat P
Programul va afisa pe ecran numarul determinat P


Restrictii si precizari
== Restrictii si precizari ==
 
2 ≤ n ≤ 100.000


elementele șirului vor fi cuprinse în intervalul (-1.000.000, 1.000.000)
* 2 ≤ n ≤ 100.000
* elementele șirului vor fi cuprinse în intervalul (-1.000.000, 1.000.000)


Exemplu
=== Exemplu: ===
 
'''Intrare'''
Intrare


7
7
Linia 25: Linia 20:
-8 3 9 -1 -2 7 -10  
-8 3 9 -1 -2 7 -10  


Iesire
'''Iesire'''


80
80


Rezolvare:
== Rezolvare: ==
 
<syntaxhighlight lang="python">
def cel_mai_mare_produs(n, sir):
def gaseste_produsul(n, V):
 
    max1, max2 = max(V[0], V[1]), min(V[0], V[1])
    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()))
    for i in range(2, n):
        if V[i] > max1:
            max2, max1 = max1, V[i]
        elif V[i] > max2:
            max2 = V[i]


    if n >= 2:
    min1, min2 = min(V[0], V[1]), max(V[0], V[1])


        rezultat = cel_mai_mare_produs(n, sir)
    for i in range(2, n):
        if V[i] < min1:
            min2, min1 = min1, V[i]
        elif V[i] < min2:
            min2 = V[i]


        print("Cel mai mare număr care poate fi scris ca produs de două elemente din șir:", rezultat)
    P1 = min1 * min2
    P2 = max1 * max2


    else:
    return P1 if P1 > P2 else P2


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


if __name__ == "__main__":
n = int(input())
V = list(map(int, input().split()))


    main()
rezultat = gaseste_produsul(n, V)
print(rezultat)
</syntaxhighlight>       

Versiunea de la data 2 ianuarie 2024 13:30

Cerința

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 gaseste_produsul(n, V):
    max1, max2 = max(V[0], V[1]), min(V[0], V[1])

    for i in range(2, n):
        if V[i] > max1:
            max2, max1 = max1, V[i]
        elif V[i] > max2:
            max2 = V[i]

    min1, min2 = min(V[0], V[1]), max(V[0], V[1])

    for i in range(2, n):
        if V[i] < min1:
            min2, min1 = min1, V[i]
        elif V[i] < min2:
            min2 = V[i]

    P1 = min1 * min2
    P2 = max1 * max2

    return P1 if P1 > P2 else P2


n = int(input())
V = list(map(int, input().split()))

rezultat = gaseste_produsul(n, V)
print(rezultat)