Dado n, encuentra x, y, z tales que x, y, z satisfacen la ecuación “2/n = 1/x + 1/y + 1/z”
Hay múltiples x, y y z que satisfacen la ecuación imprime cualquiera de ellos, si no es posible, imprima -1.
Ejemplos:
Input : 3 Output : 3 4 12 Explanation: here 3 4 and 12 satisfy the given equation Input : 7 Output : 7 8 56
Note que para n = 1 no hay solución, y para n > 1 hay solución x = n, y = n+1, z = n·(n+1).
Para llegar a esta solución, representa 2/n como 1/n+1/n y reduce el problema para representar 1/n como una suma de dos fracciones. Encontremos la diferencia entre 1/n y 1/(n+1) y obtengamos una fracción 1/(n*(n+1)), por lo que la solución es
2/n = 1/n + 1/(n+1) + 1/(n*(n+1))
C++
// CPP program to find x y z that // satisfies 2/n = 1/x + 1/y + 1/z... #include <bits/stdc++.h> using namespace std; // function to find x y and z that // satisfy given equation. void printXYZ(int n) { if (n == 1) cout << -1; else cout << "x is " << n << "\ny is " << n + 1 << "\nz is " << n * (n + 1); } // driver program to test the above function int main() { int n = 7; printXYZ(n); return 0; }
Java
// Java program to find x y z that // satisfies 2/n = 1/x + 1/y + 1/z... import java.io.*; class Sums { // function to find x y and z that // satisfy given equation. static void printXYZ(int n){ if (n == 1) System.out.println(-1); else{ System.out.println("x is "+ n); System.out.println("y is "+ (n+1)); System.out.println("z is "+ (n * (n + 1))); } } // Driver program to test the above function public static void main (String[] args) { int n = 7; printXYZ(n); } } // This code is contributed by Chinmoy Lenka
Python3
# Python3 code to find x y z that # satisfies 2/n = 1/x + 1/y + 1/z... # function to find x y and z that # satisfy given equation. def printXYZ( n ): if n == 1: print(-1) else: print("x is " , n ) print("y is " ,n + 1) print("z is " ,n * (n + 1)) # driver code to test the above function n = 7 printXYZ(n) # This code is contributed by "Sharad_Bhardwaj".
C#
// C# program to find x y z that // satisfies 2/n = 1/x + 1/y + 1/z... using System; class GFG { // function to find x y and z that // satisfy given equation. static void printXYZ(int n) { if (n == 1) Console.WriteLine(-1); else { Console.WriteLine("x is "+ n); Console.WriteLine("y is "+ (n+1)); Console.WriteLine("z is "+ (n * (n + 1))); } } // Driver program public static void Main () { int n = 7; printXYZ(n); } } // This code is contributed by vt_m
PHP
<?php // PHP program to find x y z that // satisfies 2/n = 1/x + 1/y + 1/z... // function to find x y and z that // satisfy given equation. function printXYZ($n) { if ($n == 1) echo -1; else echo "x is " , $n , "\ny is " , $n + 1 , "\nz is ", $n * ($n + 1); } // Driver Code $n = 7; printXYZ($n); // This code is contributed by anuj_67. ?>
Javascript
<script> // Javascript program to find x y z that // satisfies 2/n = 1/x + 1/y + 1/z... // function to find x y and z that // satisfy given equation. function printXYZ(n) { if (n == 1) document.write(-1); else document.write("x is " + n + "<br>y is " + (n + 1) + "<br>z is " + n * (n + 1)); } // driver program to test the above function let n = 7; printXYZ(n); </script>
Producción:
x is 7 y is 8 z is 56
Complejidad de Tiempo : O(1)
Espacio Auxiliar : O(1)
Solución alternativa
Podemos escribir 2/n = 1/n + 1/n. Y además como 2/n = 1/n + 1/2n + 1/2n.