Given an array of integers **arr[]** and two integers** X** and** Y**, the task is to check if it is possible to obtain a sequence having sum **X** such that the sum of each element of the subsequence multiplied by an array element is equal to **Y**. **Note:** Here X is always less than Y.

**Examples:**

Input:arr[] = {1, 2, 7, 9, 10}, X = 11, Y = 13Output:YesExplanation:

The given value of X( = 11) can be split into a sequence {9, 2} such that 9 * 1(= arr[0] + 2 * 2(= arr[1]) = 13( = Y)

Input:arr[] ={1, 3, 5, 7}, X = 27, Y = 34Output:No

**Approach: **Follow the steps below in order to solve the problem:

- Calculate the
**difference**between**Y**and**X**. - For every array element
**arr[i]**, which is**> 1**, update**(Y – X) % (arr[i] – 1)**. - If the
**difference**is reduced 0, print “**Yes**“. Otherwise, print**“No”**.

Below is the implementation of the above approach:

## C++

`// C++ Program to implement ` `// the above approach ` `#include <iostream> ` `using` `namespace` `std; ` ` ` `// Function to check if it is possible ` `// to obtain sum Y from a sequence of ` `// sum X from the array arr[] ` `void` `solve(` `int` `arr[], ` `int` `n, ` `int` `X, ` `int` `Y) ` `{ ` ` ` ` ` `// Store the difference ` ` ` `int` `diff = Y - X; ` ` ` ` ` `// Iterate over the array ` ` ` `for` `(` `int` `i = 0; i < n; i++) { ` ` ` ` ` `if` `(arr[i] != 1) { ` ` ` `diff = diff % (arr[i] - 1); ` ` ` `} ` ` ` `} ` ` ` ` ` `// If diff reduced to 0 ` ` ` `if` `(diff == 0) ` ` ` `cout << ` `"Yes"` `; ` ` ` `else` ` ` `cout << ` `"No"` `; ` `} ` ` ` `// Driver Code ` `int` `main() ` `{ ` ` ` `int` `arr[] = { 1, 2, 7, 9, 10 }; ` ` ` `int` `n = ` `sizeof` `(arr) / ` `sizeof` `(arr[0]); ` ` ` `int` `X = 11, Y = 13; ` ` ` `solve(arr, n, X, Y); ` ` ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

## Java

`// Java program to implement ` `// the above approach ` `class` `GFG{ ` ` ` `// Function to check if it is possible ` `// to obtain sum Y from a sequence of ` `// sum X from the array arr[] ` `static` `void` `solve(` `int` `arr[], ` `int` `n, ` ` ` `int` `X, ` `int` `Y) ` `{ ` ` ` ` ` `// Store the difference ` ` ` `int` `diff = Y - X; ` ` ` ` ` `// Iterate over the array ` ` ` `for` `(` `int` `i = ` `0` `; i < n; i++) ` ` ` `{ ` ` ` `if` `(arr[i] != ` `1` `) ` ` ` `{ ` ` ` `diff = diff % (arr[i] - ` `1` `); ` ` ` `} ` ` ` `} ` ` ` ` ` `// If diff reduced to 0 ` ` ` `if` `(diff == ` `0` `) ` ` ` `System.out.print( ` `"Yes"` `); ` ` ` `else` ` ` `System.out.print(` `"No"` `); ` `} ` ` ` `// Driver Code ` `public` `static` `void` `main (String []args) ` `{ ` ` ` `int` `arr[] = { ` `1` `, ` `2` `, ` `7` `, ` `9` `, ` `10` `}; ` ` ` `int` `n = arr.length; ` ` ` `int` `X = ` `11` `, Y = ` `13` `; ` ` ` ` ` `solve(arr, n, X, Y); ` `} ` `} ` ` ` `// This code is contributed by chitranayal ` |

*chevron_right*

*filter_none*

## Python3

`# Python3 program to implement ` `# the above approach ` ` ` `# Function to check if it is possible ` `# to obtain sum Y from a sequence of ` `# sum X from the array arr[] ` `def` `solve(arr, n, X, Y): ` ` ` ` ` `# Store the difference ` ` ` `diff ` `=` `Y ` `-` `X ` ` ` ` ` `# Iterate over the array ` ` ` `for` `i ` `in` `range` `(n): ` ` ` `if` `(arr[i] !` `=` `1` `): ` ` ` `diff ` `=` `diff ` `%` `(arr[i] ` `-` `1` `) ` ` ` ` ` `# If diff reduced to 0 ` ` ` `if` `(diff ` `=` `=` `0` `): ` ` ` `print` `(` `"Yes"` `) ` ` ` `else` `: ` ` ` `print` `(` `"No"` `) ` ` ` `# Driver Code ` `arr ` `=` `[ ` `1` `, ` `2` `, ` `7` `, ` `9` `, ` `10` `] ` `n ` `=` `len` `(arr) ` `X, Y ` `=` `11` `, ` `13` ` ` `# Function call ` `solve(arr, n, X, Y) ` ` ` `# This code is contributed by Shivam Singh` |

*chevron_right*

*filter_none*

## C#

`// C# program to implement ` `// the above approach ` `using` `System; ` ` ` `class` `GFG{ ` ` ` `// Function to check if it is possible ` `// to obtain sum Y from a sequence of ` `// sum X from the array []arr ` `static` `void` `solve(` `int` `[]arr, ` `int` `n, ` ` ` `int` `X, ` `int` `Y) ` `{ ` ` ` ` ` `// Store the difference ` ` ` `int` `diff = Y - X; ` ` ` ` ` `// Iterate over the array ` ` ` `for` `(` `int` `i = 0; i < n; i++) ` ` ` `{ ` ` ` `if` `(arr[i] != 1) ` ` ` `{ ` ` ` `diff = diff % (arr[i] - 1); ` ` ` `} ` ` ` `} ` ` ` ` ` `// If diff reduced to 0 ` ` ` `if` `(diff == 0) ` ` ` `Console.Write(` `"Yes"` `); ` ` ` `else` ` ` `Console.Write(` `"No"` `); ` `} ` ` ` `// Driver Code ` `public` `static` `void` `Main(String []args) ` `{ ` ` ` `int` `[]arr = { 1, 2, 7, 9, 10 }; ` ` ` `int` `n = arr.Length; ` ` ` `int` `X = 11, Y = 13; ` ` ` ` ` `solve(arr, n, X, Y); ` `} ` `} ` ` ` `// This code is contributed by Amit Katiyar` |

*chevron_right*

*filter_none*

**Output:**

Yes

**Time Complexity:** O(N) **Auxiliary Space:** O(1)

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.