Dans Python 3.8, pow (n, -1, 1000000007) est meilleur que pow (n, 1000000007 --2, 1000000007)

Dans Python 3.8, pow (n, -1, 1000000007) est meilleur que pow (n, 1000000007 --2, 1000000007)

Python 3.8 pow peut désormais prendre une valeur négative pour le deuxième argument même si vous spécifiez le troisième argument, qui est également noté dans la note de publication de Python 3.8.

What’s New In Python 3.8: Other Language Changes

For integers, the three-argument form of the pow() function now permits the exponent to be negative in the case where the base is relatively prime to the modulus.

Et il semble qu'il soit beaucoup plus rapide de spécifier -1 et de calculer l'élément inverse.

$ python3.8
Python 3.8.3 (default, May 23 2020, 15:50:53)
[GCC 9.3.0] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from timeit import timeit
>>> m = 1000000007
>>> pow(2, m - 2, m)
500000004
>>> pow(2, -1, m)
500000004
>>> timeit(lambda: [pow(i, m - 2, m) for i in range(1, 10000)], number=100)
3.5805746999103576
>>> timeit(lambda: [pow(i, -1, m) for i in range(1, 10000)], number=100)
1.2788116000592709

Recommended Posts

Dans Python 3.8, pow (n, -1, 1000000007) est meilleur que pow (n, 1000000007 --2, 1000000007)
Golang vs Python - Golang est-il meilleur que Python?
cout << "Hello, World! \ N" en python
Le configurateur de [python] python peut être meilleur que la gestion des paramètres avec yaml
Quadtree en Python --2
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Méta-analyse en Python
Unittest en Python
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Plink en Python
Constante en Python
FizzBuzz en Python
Sqlite en Python
Étape AIC en Python
Traitement Y / n avec bash, Python et Go
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Quad-tree en Python
Réflexion en Python
Chimie avec Python
Hashable en Python
DirectLiNGAM en Python
LiNGAM en Python
Aplatir en Python
Aplatir en python
Afficher n chiffres après la virgule décimale en python
[Petite histoire] En Python, i = i + 1 est légèrement plus rapide que i + = 1.
Décale la chaîne de l'alphabet de N caractères en Python
AtCoder # 36 quotidien avec Python
Texte de cluster en Python
Daily AtCoder # 32 en Python
Daily AtCoder # 6 en Python
Daily AtCoder # 18 en Python
Modifier les polices en Python
Motif singleton en Python
Opérations sur les fichiers en Python
Lire DXF avec python