📌  相关文章
📜  查找满足2 / n = 1 / x + 1 / y + 1 / z的x,y,z

📅  最后修改于: 2021-04-25 04:55:40             🧑  作者: Mango

给定n,找到x,y,z,使得x,y,z满足方程“ 2 / n = 1 / x + 1 / y + 1 / z”
有多个满足等式的x,y和z打印其中的任何一个,如果不可能,则打印-1。
例子:

Input : 3
Output : 3 4 12
Explanation: here 3 4 and 12 satisfy 
the given equation

Input : 7
Output : 7 8 56 

注意,对于n = 1,没有解,对于n> 1,有解x = n,y = n + 1,z = n·(n + 1)。
为了解决这个问题,将2 / n表示为1 / n + 1 / n,并将问题简化为将1 / 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 
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


Javascript


输出:

x is 7
y is 8
z is 56

时间复杂度: O(1)
替代解决方案
我们可以写2 / n = 1 / n + 1 / n。并且进一步为2 / n = 1 / n + 1 / 2n + 1 / 2n。