Given a distinct integers array **arr[]** of size **N** and an integer **K**, the task is to count the number of subsets of size **K** of array whose product of elements can be represented as **a ^{2} – b^{2}**.

**Examples:**

Input:arr[] = {1, 2, 3} K = 2

Output:2

Explaination:

All possible subsets of length 2 with their products are given below:

{1, 2} = 2

{2, 3} = 6

{1, 3} = 3

Since, only 3 can be expressed as (2^{2}– 1^{2}, therefore only one such subset exists.

Input:arr[] = {2, 5, 6} K = 2

Output:2

Explaination:

All possible contiguous sub-sequences with their products given below:

{2, 5} = 10

{2, 6} = 12

{5, 6} = 30

Since, only 12 can be expressed as (4^{2}– 2^{2}), only one such subset exists.

**Approach:**

- Generate all subsets of size
**K**. - Calculate the products of all subsets.
- A number can be represented as the difference of square of two numbers only if it is
**odd or divisible by 4**. - Hence, count all subsets with with product that satisfies this condition.

Below is the implementation of the above approach:

## Python3

`# Python3 implementation of the approach ` ` ` `import` `itertools ` ` ` `# Function to return the ` `# Count of required sub-sequences ` `def` `count_seq(arr, n, k): ` ` ` ` ` `# ans is Count variable ` ` ` `ans ` `=` `0` ` ` ` ` `for` `seq ` `in` `itertools.combinations(arr, k): ` ` ` ` ` `# product of seq ` ` ` `pro ` `=` `1` ` ` ` ` `for` `ele ` `in` `seq: ` ` ` `pro ` `*` `=` `ele ` ` ` ` ` `# checking form of a2-b2 ` ` ` `if` `((pro ` `%` `4` `) !` `=` `2` `): ` ` ` `ans ` `+` `=` `1` ` ` `return` `ans ` ` ` `# Driver code ` `if` `__name__ ` `=` `=` `"__main__"` `: ` ` ` `arr ` `=` `[` `2` `, ` `5` `, ` `6` `] ` ` ` `n ` `=` `len` `(arr) ` ` ` `k ` `=` `2` ` ` `print` `(count_seq(arr, n, k)) ` |

*chevron_right*

*filter_none*

**Output:**

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.