在 Python 中用恰好两个项目计算美食的程序

假设我们有一个数组 deli,其中 deli[i] 是第 i 种食物的美味程度,我们必须从这个列表中找到我们可以制作的不同美食的数量。如果答案太大,则返回模 10^9 + 7 的结果。这里的一顿美餐是指恰好包含两种不同食物的一顿饭,其美味之和是 2 的幂。我们可以选择任意两种不同的食物来做一顿美餐。

因此,如果输入类似于 deli = [1,7,3,6,5],那么输出将是 3,因为我们可以将 (1,3)、(1,7) 和 (3,5) 对sum 是 2 的幂。

示例

让我们看看以下实现以获得更好的理解 -

from collections import Counter

def solve(deli):

   m = 10**9 + 7

   count = Counter(deli)

   ans = 0

   for i in count:

      for n in range(22):

         j = (1<<n)-i

         if j in count:

            if i == j:

               ans += count[i] * (count[i]-1)

            else:

               ans += count[i] * count[j]

   return (ans // 2) % 米

deli = [1,7,3,6,5]

print(solve(deli))

输入

[1,7,3,6,5]
输出结果
3

以上是 在 Python 中用恰好两个项目计算美食的程序 的全部内容, 来源链接: utcz.com/z/331687.html

回到顶部