Sprachaktualisierung Als Besatzungsmitglied konnte ich Cython in der neuen Umgebung für Richtertests ausprobieren, also habe ich es versucht. Übrigens, was war das erste Mal, dass ich Cython berührte? Ich weiß es nicht einmal (lacht)
Übrigens ist Python 3 nach dem Sprachupdate 3.8.0 und Cython 0.29.14.
ABC085C - Ich habe es mit Otoshidama versucht. Ich habe den Quellcode, der AC war, mit 678 ms bei Python 3 eingereicht, wie es bei Cython und AC bei 614 ms ist.
from sys import exit
N, Y = map(int, input().split())
for i in range(N + 1):
for j in range(N + 1 - i):
k = N - i - j
if 10000 * i + 5000 * j + 1000 * k == Y:
print('%d %d %d' % (i, j, k))
exit()
print('-1 -1 -1')
Hätten Sie nicht gedacht, dass Python 3 mit RE bestraft würde, obwohl die Compiler CE waren und selbst mit einem schlampigen Tippfehler keine Strafen? Cython wäre CE. Sie haben es geschafft !!
Wenn Sie versuchen, das = in der ersten Zuweisungsanweisung zu löschen, wird eine solche Fehlermeldung angezeigt.
Error compiling Cython file:
------------------------------------------------------------
...
from sys import exit
N, Y map(int, input().split())
^
------------------------------------------------------------
Main.py:3:6: Syntax error in simple statement list
./Main.c:1:2: error: #error Do not use this file, it is the result of a failed Cython compilation.
1 | #error Do not use this file, it is the result of a failed Cython compilation.
| ^~~~~
Wenn ich mir die Cython-Dokumentation anschaue, brauche ich anscheinend zwei Quellcodes, z. B. das Schreiben einer .pyx-Datei, das Kompilieren sowie das Importieren und Verwenden in .py, sodass ich zunächst nicht wusste, wie ich sie verwenden soll. Cython verfügt über den Pure Python-Modus, der anscheinend von AtCoder verwendet wird.
Infolgedessen AC. 6-mal schneller in 107ms !!
from cython import longlong
def main():
N: longlong
Y: longlong
N, Y = map(int, input().split())
i: longlong
j: longlong
for i in range(N + 1):
for j in range(N + 1 - i):
k: longlong = N - i - j
if 10000 * i + 5000 * j + 1000 * k == Y:
print('%d %d %d' % (i, j, k))
return
print('-1 -1 -1')
if __name__ == '__main__':
main()
Nach dem Sprachupdate war PyPy 3 7.3.0, AC bei 150 ms. Der Speicherverbrauch wurde jedoch im Vergleich zu 8,7 MB für Python 3 / Cython auf 64 MB erheblich erhöht.