Dado un número entero N , la tarea es contar el número total de pares ordenados de modo que el MCM de cada par sea igual a N.
Ejemplos:
Entrada: N = 6
Salida: 9
Explicación:
Los pares con MCM igual a N(= 6) son {(1, 6), (2, 6), (2, 3), (3, 6), (6, 6) ), (6, 3), (3, 2), (6, 2), (6, 1)}
Por lo tanto, la salida es 9.Entrada: N = 36
Salida: 25
Enfoque: El problema se puede resolver con base en las siguientes observaciones:
Considere un par ordenado (X, Y).
X = P 1 a1 * P 2 a2 * P 3 a3 *…..* Pn an
Y = P 1 b1 * P 2 b2 * P 3 b3 *…..* Pn bn
Aquí, P 1 , P 2 , …. ., P n son factores primos de X e Y.
LCM(X, Y) = P 1 max(a1, b1) * P2 max(a2, b2) *……….*Pn max(an, bn)
Por lo tanto, mcm(x, y) = norte = pag 1 metro 1 * pag 2 metro 2 * pag3 m 3 *…..* Pn m nPor lo tanto, el número total de pares ordenados (X, Y)
= [{(m 1 + 1) 2 – m 1 2 } * {(m 2 + 1) 2 – m 2 2 } * ……* {(m n + 1) 2 – m n 2 } ]
= (2*m 1 +1) * (2*m 2 +1) * (2*m 3 +1) * ……..* (2*m n +1) .
Siga los pasos a continuación para resolver el problema:
- Inicialice una variable, digamos, countPower , para almacenar la potencia de todos los factores primos de N .
- Calcular la potencia de todos los factores primos de N .
- Finalmente, imprima el conteo de pares ordenados (X, Y) usando la fórmula mencionada anteriormente.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program to implement // the above approach #include <bits/stdc++.h> using namespace std; // Function to count the number of // ordered pairs with given LCM int CtOrderedPairs(int N) { // Stores count of // ordered pairs int res = 1; // Calculate power of all // prime factors of N for (int i = 2; i * i <= N; i++) { // Store the power of // prime factors int countPower = 0; while (N % i == 0) { countPower++; N /= i; } res = res * (2 * countPower + 1); } if (N > 1) { res = res * (2 * 1 + 1); } return res; } // Driver Code int main() { int N = 36; cout << CtOrderedPairs(N); }
Java
// Java program to implement // the above approach class GFG{ // Function to count the number of // ordered pairs with given LCM static int CtOrderedPairs(int N) { // Stores count of // ordered pairs int res = 1; // Calculate power of all // prime factors of N for(int i = 2; i * i <= N; i++) { // Store the power of // prime factors int countPower = 0; while (N % i == 0) { countPower++; N /= i; } res = res * (2 * countPower + 1); } if (N > 1) { res = res * (2 * 1 + 1); } return res; } // Driver Code public static void main(String[] args) { int N = 36; System.out.println(CtOrderedPairs(N)); } } // This code is contributed by aimformohan
Python3
# Python3 program to implement # the above approach # Function to count the number of # ordered pairs with given LCM def CtOrderedPairs(N): # Stores count of # ordered pairs res = 1 # Calculate power of all # prime factors of N i = 2 while(i * i <= N): # Store the power of # prime factors countPower = 0 while (N % i == 0): countPower += 1 N //= i res = res * (2 * countPower + 1) i += 1 if (N > 1): res = res * (2 * 1 + 1) return res # Driver Code N = 36 print(CtOrderedPairs(N)) # This code is contributed by code_hunt
C#
// C# program to implement // the above approach using System; class GFG{ // Function to count the number of // ordered pairs with given LCM static int CtOrderedPairs(int N) { // Stores count of // ordered pairs int res = 1; // Calculate power of all // prime factors of N for(int i = 2; i * i <= N; i++) { // Store the power of // prime factors int countPower = 0; while (N % i == 0) { countPower++; N /= i; } res = res * (2 * countPower + 1); } if (N > 1) { res = res * (2 * 1 + 1); } return res; } // Driver Code public static void Main() { int N = 36; Console.WriteLine(CtOrderedPairs(N)); } } // This code is contributed by code_hunt
Javascript
<script> // Javascript program to implement // the above approach // Function to count the number of // ordered pairs with given LCM function CtOrderedPairs(N) { // Stores count of // ordered pairs let res = 1; // Calculate power of all // prime factors of N for(let i = 2; i * i <= N; i++) { // Store the power of // prime factors let countPower = 0; while (N % i == 0) { countPower++; N /= i; } res = res * (2 * countPower + 1); } if (N > 1) { res = res * (2 * 1 + 1); } return res; } // Driver Code let N = 36; document.write(CtOrderedPairs(N)); </script>
25
Complejidad de Tiempo: O(√N)
Espacio Auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por aimformohan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA