Gegeben sei eine Folge nichtnegativer Ganzzahlen a0,…,an−1,
finde das maximale paarweise Produkt, das heißt, die größte ganze Zahl, die durch Multiplikation zweier verschiedener Elemente aus der Folge erhalten werden kann (oder formell, max0≤i≠j≤n−1aiaj
). Verschiedene Elemente bedeuten hier ai und aj mit i≠j
(es kann der Fall sein, dass ai=aj
).Mein Code funktioniert nicht jedes Mal, wenn ich ihn starte
Eingabeformat
Die erste Zeile der Eingabe enthält eine ganze Zahl n. Die nächste Zeile enthält n nicht negative Ganzzahlen a0,…,an−1
.
Constraints
2≤n≤2⋅105; 0≤a0,…,an−1≤105
.
Ausgabeformat
Ausgang eine einzige Zahl - die maximale paarweise Produkt.
Dieser Code funktioniert gut, aber manchmal, wenn ich es laufen es zeigt:
Traceback (most recent call last):
File "C:\Users\gauta\AppData\Local\Programs\Python\Python35\gen.py", line 26, in <module>
print(max(c))
ValueError: max() arg is an empty sequence
Es zeigt dies nur, wenn insgesamt Elemente in der Liste ‚a‘ sind 2 oder 3
Wie kann ich dies verbessern Code und beheben Sie dieses Problem, und zeigt dieser Code ein Zeitlimit überschritten oder Integer Overflow Bug?
import random
import time
b=time.time()
a=list()
c=list()
n=random.randint(2,12)
#appending random numbers in a list 'a'
g=1
while(g<=n):
a.append(random.randint(0,10))
g=g+1
print(a)
print("Total elements in the list= %s"%len(a))
#Appending Done
for i in range(2,n):
for j in range (2,n):
if a[i]*a[j]>0:
if a[i]!=a[j]:
m=a[i]*a[j]
c.append(m)
else:
continue
else:
continue
print(max(c))
time=time.time()-b
print("%s"%(time.time()-b))
'time = time.time() - b' ersetzt den Namen' Time'. Dieser Code * funktioniert niemals *. –
Sie überschreiben 'time' in der Zeile' time = time.time() - b', wechseln einfach zu 't = time.time() - b' und' print (t) ' – AChampion
Dank dieses Zeitproblems. Irgendwelche Vorschläge, wie kann ich diesen Code arbeiten schneller und frei von Integer-Overflow-Fehler (falls vorhanden) –