# Subsets of size K with product equal to difference of two perfect squares

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 = 2Output:2Explaination:

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 = 2Output:2Explaination:

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))` |

**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. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**

In case you wish to attend **live classes **with experts, please refer **DSA Live Classes for Working Professionals **and **Competitive Programming Live for Students**.