Mein Python-Code schlägt in einigen Testfällen fehl (4 von 43) und ich verstehe nicht, warum?
Also habe ich versucht, diese Aufgabe zu lösen: https://training.olinfo.it/#/task/ois_avg/statement. Aber in einigen Testfällen ist meine Ausgabe offensichtlich falsch.
Aufgabe: Sie haben N Produkte, deren Preise in einer Liste P mit N Elementen angegeben sind (jedes Produkt hat einen Preis). Sie müssen den Preis einiger Produkte ändern, um einen Durchschnittspreis von K zu erhalten. K, N und alle Elemente von P sind positive ganze Zahlen. Wie groß ist die Mindestanzahl der Produkte, deren Preise geändert werden müssen?
Mein Code:
#input
N, K = map(int, input().strip().split())
P = list(map(int, input().strip().split()))
#main
ans = 0
average = sum(P)/N
difference = (average - K)*N
if average<K:
ans = 1
elif average == K:
ans = 0
else:
P.sort(reverse=True)
for i in range(N):
ans+=1
difference = difference - P[i]+1
if difference < 1:
break
#output
print(ans)
1 Antwort
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Informatik, Python
Wahrscheinlich fängst Du dir beim Berechnen von average einen Rundungsfehler ein. Versuch's mal direkt:
# average = sum(P)/N
difference = sum(P) - K*N
if difference < 0:
ans = 1
elif difference == 0:
...
Ja, das war der Fehler, jetzt funktioniert es perfekt.
Danke