📜  求x和y满足ax + by = n

📅  最后修改于: 2021-04-25 00:30:53             🧑  作者: Mango

给定a,b和n。找到满足ax + by = n的x和y。打印满足等式的x和y中的任何一个
例子 :

Input : n=7 a=2 b=3
Output : x=2, y=1 
Explanation: here x and y satisfies the equation

Input : 4 2 7 
Output : No solution

我们可以使用线性Diophantine方程检查是否存在任何解,但是在这里我们需要找出该方程的解,因此我们可以简单地迭代从0到n的所有可能值,因为对于该给定的方程,它不能超过n。因此,用纸和笔求解该方程式可得y =(n-ax)/ b ,类似地,我们得到另一个数为x =(n-by)/ a 。如果没有一个值满足方程式,最后我们打印“无解决方案”

C++
// CPP program to find solution of ax + by = n
#include 
using namespace std;
 
// function to find the solution
void solution(int a, int b, int n)
{
    // traverse for all possible values
    for (int i = 0; i * a <= n; i++) {
 
        // check if it is satisfying the equation
        if ((n - (i * a)) % b == 0) {
            cout << "x = " << i << ", y = "
                 << (n - (i * a)) / b;
            return;
        }
    }
 
    cout << "No solution";
}
 
// driver program to test the above function
int main()
{
    int a = 2, b = 3, n = 7;
    solution(a, b, n);
    return 0;
}


Java
// Java program to find solution
// of ax + by = n
import java.io.*;
 
class GfG {
         
    // function to find the solution
    static void solution(int a, int b, int n)
    {
        // traverse for all possible values
        for (int i = 0; i * a <= n; i++)
        {
     
            // check if it is satisfying the equation
            if ((n - (i * a)) % b == 0)
            {
                System.out.println("x = " + i +
                                   ", y = " +
                                   (n - (i * a)) / b);
                 
                return ;
            }
        }
     
        System.out.println("No solution");
    }
     
     
    public static void main (String[] args)
    {
        int a = 2, b = 3, n = 7;
        solution(a, b, n);
     
    }
}
 
// This code is contributed by Gitanjali.


Python3
# Python3 code to find solution of
# ax + by = n
 
# function to find the solution
def solution (a, b, n):
 
    # traverse for all possible values
    i = 0
    while i * a <= n:
         
        # check if it is satisfying
        # the equation
        if (n - (i * a)) % b == 0:
            print("x = ",i ,", y = ",
               int((n - (i * a)) / b))
            return 0
        i = i + 1
     
    print("No solution")
 
# driver program to test the above function
a = 2
b = 3
n = 7
solution(a, b, n)
 
# This code is contributed by "Sharad_Bhardwaj".


C#
// C# program to find solution
// of ax + by = n
using System;
 
class GfG {
         
    // function to find the solution
    static void solution(int a, int b, int n)
    {
         
        // traverse for all possible values
        for (int i = 0; i * a <= n; i++)
        {
     
            // check if it is satisfying the
            // equation
            if ((n - (i * a)) % b == 0)
            {
                Console.Write("x = " + i +
                                ", y = " +
                        (n - (i * a)) / b);
                 
                return ;
            }
        }
     
        Console.Write("No solution");
    }
     
    // Driver code
    public static void Main ()
    {
        int a = 2, b = 3, n = 7;
        solution(a, b, n);
     
    }
}
 
// This code is contributed by Vt_m.


PHP


Javascript


输出 :

x = 2, y = 1