Résidus quadratiques modulo un nombre premier
Rust
Medium
math
Tâche «Résidus quadratiques modulo un nombre premier»
Soient un nombre premier p (p > 2) et un entier a (0 ≤ a < p). Il faut déterminer si a est un résidu quadratique modulo p, c’est-à-dire s’il existe un entier x tel que x^2 ≡ a (mod p). Si a est un résidu quadratique, affichez un tel x (0 ≤ x < p). Sinon, affichez -1. Utilisez le symbole de Legendre et l’algorithme de Tonelli-Shanks ou une recherche exhaustive en tenant compte des contraintes.
Format d\ entrée
La première ligne contient deux entiers : p (premier, 3 ≤ p ≤ 10^9) et a (0 ≤ a < p).
Format de sortie
Affichez un seul entier : x (0 ≤ x < p) tel que x^2 ≡ a (mod p), ou -1 s’il n’y a pas de solution.
Exemples
Exemple 1
ENTRÉE
7 2
SORTIE
4
Exemple 2
ENTRÉE
7
apple
banana
apple
cherry
banana
apple
date
SORTIE
-1
Exemple 3
ENTRÉE
7 3
SORTIE
-1
Exemple 4
ENTRÉE
4
aa
a
aaa
a
SORTIE
-1
Exemple 5
ENTRÉE
13 4
SORTIE
11
main.rs