Given two integers **X** and **Y**. **X** and **Y** represent any two values among (A + B), (A + C) and (B + C). The task is to find **A**, **B** and **C** such that **A + B + C** is minimum possible.

**Examples:**

Input:X = 3, Y = 4

Output:2 1 2

A = 2, B = 1, C = 2.

Then A + B = 3 and A + C = 4.

A + B + C = 5 which is minimum possible.

Input:X = 123, Y = 13

Output:1 12 111

**Approach:** Let **X = A + B** and **Y = B + C**. If **X > Y** let’s swap them. Note that **A + B + C = A + B + (Y – B) = A + Y**. That’s why it’s optimal to minimize the value of **A**. So the value of **A** can always be **1**. Then **B = X – A** and **C = Y – B**.

Below is the implementation of the above approach:

## C++

`// C++ implementation of the approach ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `// Function to find A, B and C ` `void` `MinimumValue(` `int` `x, ` `int` `y) ` `{ ` ` ` ` ` `// Keep minimum number in x ` ` ` `if` `(x > y) ` ` ` `swap(x, y); ` ` ` ` ` `// Find the numbers ` ` ` `int` `a = 1; ` ` ` `int` `b = x - 1; ` ` ` `int` `c = y - b; ` ` ` ` ` `cout << a << ` `" "` `<< b << ` `" "` `<< c; ` `} ` ` ` `// Driver code ` `int` `main() ` `{ ` ` ` `int` `x = 123, y = 13; ` ` ` ` ` `// Function call ` ` ` `MinimumValue(x, y); ` ` ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

## Java

`// Java implementation of the approach ` `import` `java.io.*; ` ` ` `class` `GFG ` `{ ` ` ` `// Function to find A, B and C ` `static` `void` `MinimumValue(` `int` `x, ` `int` `y) ` `{ ` ` ` ` ` `// Keep minimum number in x ` ` ` `if` `(x > y) ` ` ` `{ ` ` ` `int` `temp = x; ` ` ` `x = y; ` ` ` `y = temp; ` ` ` `} ` ` ` ` ` `// Find the numbers ` ` ` `int` `a = ` `1` `; ` ` ` `int` `b = x - ` `1` `; ` ` ` `int` `c = y - b; ` ` ` ` ` `System.out.print( a + ` `" "` `+ b + ` `" "` `+ c); ` `} ` ` ` `// Driver code ` `public` `static` `void` `main (String[] args) ` `{ ` ` ` `int` `x = ` `123` `, y = ` `13` `; ` ` ` ` ` `// Function call ` ` ` `MinimumValue(x, y); ` `} ` `} ` ` ` `// This code is contributed by anuj_67.. ` |

*chevron_right*

*filter_none*

## Python3

`# Python3 implementation of the approach ` ` ` `# Function to find A, B and C ` `def` `MinimumValue(x, y): ` ` ` ` ` `# Keep minimum number in x ` ` ` `if` `(x > y): ` ` ` `x, y ` `=` `y, x ` ` ` ` ` `# Find the numbers ` ` ` `a ` `=` `1` ` ` `b ` `=` `x ` `-` `1` ` ` `c ` `=` `y ` `-` `b ` ` ` ` ` `print` `(a, b, c) ` ` ` `# Driver code ` `x ` `=` `123` `y ` `=` `13` ` ` `# Function call ` `MinimumValue(x, y) ` ` ` `# This code is contributed by Mohit Kumar ` |

*chevron_right*

*filter_none*

## C#

`// C# implementation of the approach ` `using` `System; ` ` ` `class` `GFG ` `{ ` ` ` `// Function to find A, B and C ` `static` `void` `MinimumValue(` `int` `x, ` `int` `y) ` `{ ` ` ` ` ` `// Keep minimum number in x ` ` ` `if` `(x > y) ` ` ` `{ ` ` ` `int` `temp = x; ` ` ` `x = y; ` ` ` `y = temp; ` ` ` `} ` ` ` ` ` `// Find the numbers ` ` ` `int` `a = 1; ` ` ` `int` `b = x - 1; ` ` ` `int` `c = y - b; ` ` ` ` ` `Console.WriteLine( a + ` `" "` `+ b + ` `" "` `+ c); ` `} ` ` ` `// Driver code ` `public` `static` `void` `Main () ` `{ ` ` ` `int` `x = 123, y = 13; ` ` ` ` ` `// Function call ` ` ` `MinimumValue(x, y); ` `} ` `} ` ` ` `// This code is contributed by anuj_67.. ` |

*chevron_right*

*filter_none*

**Output:**

1 12 111

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.