[PYTHON] Falsche Antwort bei Verwendung von numpy.prod () für das B-Problem von ABC169

** B-Problem ** https://atcoder.jp/contests/abc169/tasks/abc169_b

Ich las dieses Problem und dachte, wenn es eine Funktion der Multiplikationsversion von sum gibt, die alles multipliziert, dachte ich, dass es auf einmal gemacht werden könnte, und als ich es nachschlug, war numpy.prod () das, also war es WA, als ich es benutzte.

WA https://atcoder.jp/contests/abc169/submissions/15692265

Multiplizieren Sie also normalerweise mit der for-Anweisung und AC. Es scheint, dass die Multiplikation großer Zahlen langsam sein wird, also versuche ich zu brechen, sobald der Bereich überschritten wird.

AC https://atcoder.jp/contests/abc169/submissions/15692483

Ich habe numpy.prod untersucht.


Jupyter Notizbuch für die Forschung ist im Kern veröffentlicht

https://gist.github.com/kokuyokugetter/0b3718a7b0bd0adf8f3c0f6f6e483b9e


Wenn Sie die letzten beiden Zellen vergleichen, sehen Sie, dass das Gesamtprodukt von 1 bis 20 gleich ist und numpy.prod () sich von 21 unterscheidet.

Es scheint, dass numpy in C-Sprache und fortran implementiert ist, sodass der Wert, der durch Teilen des maximalen vorzeichenbehafteten Werts einer 64-Bit-Ganzzahl 9223372036854775807 durch das Gesamtprodukt von 1 bis 20 2432902008176640000 erhalten wird, ungefähr 3,8 beträgt, sodass die Abweichung nach 21 ungefähr 3,8 beträgt. Es gibt kein Gefühl von Unbehagen.

Selbst wenn danach das Gesamtprodukt von 1 bis 20 mit 4 multipliziert wurde, trat die Differenz auf, so dass es wahrscheinlich richtig ist, dass der Maximalwert 9223372036854775807 beträgt.

Es scheint sicherer zu sein, wenn Sie untersuchen, wie sich das Bit ändert und negativ wird, aber in Bezug auf Wettbewerbsprofis endet das Gesamtprodukt mit dem Gefühl, dass Sie es ernsthaft tun sollten, indem Sie einfach Python einbauen.

Recommended Posts

Falsche Antwort bei Verwendung von numpy.prod () für das B-Problem von ABC169
3 Arten von Problemumgehungen zur Aktivierung des Kollisionsproblems, wenn Pyenv und Anaconda nebeneinander existieren
Eindrücke von der Verwendung von Flask für einen Monat
[Python, Multiprocessing] Verhalten für Ausnahmen bei Verwendung von Multiprocessing
Vorsichtsmaßnahmen bei Verwendung der for-Anweisung in Pandas