📌  相关文章
📜  大小为K的子集,乘积等于两个完美平方的差

📅  最后修改于: 2021-05-17 18:58:00             🧑  作者: Mango

给定一个大小为N的整数数组arr []和一个整数K ,任务是计算数组大小为K的子集的数量,其元素乘积可以表示为2 – b 2

例子:

方法:

  1. 生成大小为K的所有子集。
  2. 计算所有子集的乘积。
  3. 仅当数字为奇数或被4整除时,数字才能表示为两个数字的平方差。
  4. 因此,用满足此条件的乘积计算所有子集。

下面是上述方法的实现:

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


输出:
1