** 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