Dados dos números enteros L y R , la tarea es encontrar un par de números enteros del rango [L, R] que también tengan LCM dentro del rango [L, R]. Si no se puede obtener tal par, imprima -1 . Si existen varios pares, imprima cualquiera de ellos.
Ejemplos:
Entrada: L =13, R = 69
Salida: X =13, Y = 26
Explicación: LCM(x, y) = 26 que satisface las condiciones L ≤ x < y ≤ R y L <= LCM(x, y) < = REntrada: L = 1, R = 665
Salida: X = 1, Y = 2
Enfoque ingenuo: el enfoque más simple es generar cada par entre L y R y calcular su LCM . Imprima un par que tenga LCM entre el rango L y R . Si no se encuentra ningún par que tenga MCM en el rango dado, imprima “-1” .
Complejidad temporal: O(N)
Espacio auxiliar: O(1)
Enfoque eficiente: el problema se puede resolver usando la técnica Greedy basada en la observación de que LCM (x, y) es al menos igual a 2*x , que es LCM de (x, 2*x) . A continuación se detallan los pasos para implementar el enfoque:
- Seleccione el valor de x como L y calcule el valor de y como 2*x
- Compruebe si y es menor que R o no.
- Si y es menor que R, imprima el par (x, y)
- De lo contrario, escriba «-1»
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of the above approach #include <iostream> using namespace std; void lcmpair(int l, int r) { int x, y; x = l; y = 2 * l; // Checking if any pair is possible // or not in range(l, r) if (y > r) { // If not possible print(-1) cout << "-1\n"; } else { // Print LCM pair cout << "X = " << x << " Y = " << y << "\n"; } } // Driver code int main() { int l = 13, r = 69; // Function call lcmpair(l, r); return 0; }
Java
// Java implementation of the above approach import java.util.*; class GFG{ static void lcmpair(int l, int r) { int x, y; x = l; y = 2 * l; // Checking if any pair is possible // or not in range(l, r) if (y > r) { // If not possible print(-1) System.out.print("-1\n"); } else { // Print LCM pair System.out.print("X = " + x + " Y = " + y + "\n"); } } // Driver code public static void main(String[] args) { int l = 13, r = 69; // Function call lcmpair(l, r); } } // This code is contributed by 29AjayKumar
Python3
# Python3 implementation of the above approach def lcmpair(l, r): x = l y = 2 * l # Checking if any pair is possible # or not in range(l, r) if(y > r): # If not possible print(-1) print(-1) else: # Print LCM pair print("X = {} Y = {}".format(x, y)) # Driver Code l = 13 r = 69 # Function call lcmpair(l, r) # This code is contributed by Shivam Singh
C#
// C# implementation of the above approach using System; class GFG{ static void lcmpair(int l, int r) { int x, y; x = l; y = 2 * l; // Checking if any pair is possible // or not in range(l, r) if (y > r) { // If not possible print(-1) Console.Write("-1\n"); } else { // Print LCM pair Console.Write("X = " + x + " Y = " + y + "\n"); } } // Driver code public static void Main(String[] args) { int l = 13, r = 69; // Function call lcmpair(l, r); } } // This code is contributed by shikhasingrajput
Javascript
<script> // javascript implementation of the above approach function lcmpair(l , r) { var x, y; x = l; y = 2 * l; // Checking if any pair is possible // or not in range(l, r) if (y > r) { // If not possible print(-1) document.write("-1\n"); } else { // Print LCM pair document.write("X = " + x + " Y = " + y + "\n"); } } // Driver code var l = 13, r = 69; // Function call lcmpair(l, r); // This code is contributed by aashish1995 </script>
X = 13 Y = 26
Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por Shivamthakur77 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA