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: | ||
== 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 == | ||
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 | 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) | |||
</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)