#practiceLinkDiv { display : aucun !important; }Étant donné deux entiers n et p, trouver le nombre de solutions intégrales de x2= 1 (mod p) dans l'intervalle fermé [1 n].
Exemples :
Input : n = 10 p = 5 Output : 4 There are four integers that satisfy the equation x2 = 1. The numbers are 1 4 6 and 9. Input : n = 15 p = 7 Output : 5 There are five integers that satisfy the equation x2 = 1. The numbers are 1 8 15 6 and 13.Recommended Practice Nombre de solutions Essayez-le !
Une solution simple consiste à parcourir tous les nombres de 1 à n. Pour chaque nombre, vérifiez s’il satisfait à l’équation. On peut éviter de parcourir toute la gamme. L'idée est basée sur le fait que si un nombre x satisfait l'équation, alors tous les nombres de la forme x + i*p satisfont également l'équation. Nous parcourons tous les nombres de 1 à p et pour chaque nombre x qui satisfait l'équation, nous trouvons le nombre de nombres de la forme x + i*p. Pour trouver le nombre, nous trouvons d’abord le plus grand nombre pour x donné, puis ajoutons (le plus grand nombre - x)/p au résultat.
Vous trouverez ci-dessous la mise en œuvre de l'idée.
C++// C++ program to count number of values // that satisfy x^2 = 1 mod p where x lies // in range [1 n] #include using namespace std; typedef long long ll; int findCountOfSolutions(int n int p) { // Initialize result ll ans = 0; // Traverse all numbers smaller than // given number p. Note that we don't // traverse from 1 to n but 1 to p for (ll x=1; x<p; x++) { // If x is a solution then count all // numbers of the form x + i*p such // that x + i*p is in range [1n] if ((x*x)%p == 1) { // The largest number in the // form of x + p*i in range // [1 n] ll last = x + p * (n/p); if (last > n) last -= p; // Add count of numbers of the form // x + p*i. 1 is added for x itself. ans += ((last-x)/p + 1); } } return ans; } // Driver code int main() { ll n = 10 p = 5; printf('%lldn' findCountOfSolutions(n p)); return 0; }
Java // Java program to count // number of values that // satisfy x^2 = 1 mod p // where x lies in range [1 n] import java.io.*; class GFG { static int findCountOfSolutions(int n int p) { // Initialize result int ans = 0; // Traverse all numbers // smaller than given // number p. Note that // we don't traverse from // 1 to n but 1 to p for (int x = 1; x < p; x++) { // If x is a solution // then count all numbers // of the form x + i*p // such that x + i*p is // in range [1n] if ((x * x) % p == 1) { // The largest number // in the form of x + // p*i in range [1 n] int last = x + p * (n / p); if (last > n) last -= p; // Add count of numbers // of the form x + p*i. // 1 is added for x itself. ans += ((last - x) / p + 1); } } return ans; } // Driver code public static void main (String[] args) { int n = 10; int p = 5; System.out.println( findCountOfSolutions(n p)); } } // This code is contributed by ajit
Python3 # Program to count number of # values that satisfy x^2 = 1 # mod p where x lies in range [1 n] def findCountOfSolutions(n p): # Initialize result ans = 0; # Traverse all numbers smaller # than given number p. Note # that we don't traverse from # 1 to n but 1 to p for x in range(1 p): # If x is a solution then # count all numbers of the # form x + i*p such that # x + i*p is in range [1n] if ((x * x) % p == 1): # The largest number in the # form of x + p*i in range # [1 n] last = x + p * (n / p); if (last > n): last -= p; # Add count of numbers of # the form x + p*i. 1 is # added for x itself. ans += ((last - x) / p + 1); return int(ans); # Driver code n = 10; p = 5; print(findCountOfSolutions(n p)); # This code is contributed by mits
C# // C# program to count // number of values that // satisfy x^2 = 1 mod p // where x lies in range [1 n] using System; class GFG { static int findCountOfSolutions(int n int p) { // Initialize result int ans = 0; // Traverse all numbers // smaller than given // number p. Note that // we don't traverse from // 1 to n but 1 to p for (int x = 1; x < p; x++) { // If x is a solution // then count all numbers // of the form x + i*p // such that x + i*p is // in range [1n] if ((x * x) % p == 1) { // The largest number // in the form of x + // p*i in range [1 n] int last = x + p * (n / p); if (last > n) last -= p; // Add count of numbers // of the form x + p*i. // 1 is added for x itself. ans += ((last - x) / p + 1); } } return ans; } // Driver code static public void Main () { int n = 10; int p = 5; Console.WriteLine( findCountOfSolutions(n p)); } } // This code is contributed by ajit
PHP // Program to count number of // values that satisfy x^2 = 1 // mod p where x lies in range [1 n] function findCountOfSolutions($n $p) { // Initialize result $ans = 0; // Traverse all numbers smaller // than given number p. Note // that we don't traverse from // 1 to n but 1 to p for ($x = 1; $x < $p; $x++) { // If x is a solution then // count all numbers of the // form x + i*p such that // x + i*p is in range [1n] if (($x * $x) % $p == 1) { // The largest number in the // form of x + p*i in range // [1 n] $last = $x + $p * ($n / $p); if ($last > $n) $last -= $p; // Add count of numbers of // the form x + p*i. 1 is // added for x itself. $ans += (($last - $x) / $p + 1); } } return $ans; } // Driver code $n = 10; $p = 5; echo findCountOfSolutions($n $p); // This code is contributed by ajit ?> JavaScript <script> // Javascript program to count number // of values that satisfy x^2 = 1 mod p // where x lies in range [1 n] function findCountOfSolutions(n p) { // Initialize result let ans = 0; // Traverse all numbers smaller // than given number p. Note that // we don't traverse from 1 to n // but 1 to p for(let x = 1; x < p; x++) { // If x is a solution // then count all numbers // of the form x + i*p // such that x + i*p is // in range [1n] if ((x * x) % p == 1) { // The largest number // in the form of x + // p*i in range [1 n] let last = x + p * (n / p); if (last > n) last -= p; // Add count of numbers // of the form x + p*i. // 1 is added for x itself. ans += ((last - x) / p + 1); } } return ans; } // Driver code let n = 10; let p = 5; document.write(findCountOfSolutions(n p)); // This code is contributed by susmitakundugoaldanga </script>
Sortir:
variable Java variable
4
Complexité temporelle : À propos
Espace auxiliaire : O(1)