程序找到给定数组的任何序列的最大大小,其中每一对在 Python 中都很好

假设我们有一个大小为 n 的序列 nums。我们必须找到 nums 子序列的最大大小,其中每对 (p, q) 都是不错的对?当且仅当它至少满足以下条件之一时,才称 pait 为好对: 1. p 的不同素因数的奇偶性等于 b 的奇偶性。例如,值 18 有两个不同的素因数:2 和 3。 2. p 的所有正因数之和的奇偶性与 q 相同。

因此,如果输入类似于 nums = [2,3,6,8],则输出将为 3

示例

让我们看看以下实现以更好地理解 -

def solve(nums):

   n = len(nums)

   cnt = []

   total = []

   result = []

   for i in nums:

      count = 0

      tot = 0

      prime = []

      for j in nums:

         if all(j % k for k in range(2, j)) == True:

            prime.append(j)

      for j in prime:

         if i % j == 0:

            count += 1

      if count % 2:

         cnt.append('odd')

      else:

         cnt.append('even')

      for j in range(1,i+1):

         if i % j == 0:

            tot += j

      if tot % 2:

         total.append('odd')

      else:

         total.append('even')

   for i in range(n-1):

      for j in range(i+1, n):

         if cnt[i] == cnt[j] or total[i] == total[j]:

            result.append(nums[i])

            if j == n-1:

               result.append(nums[j])

   result = list(set(result))

   return len(result)

nums = [2,3,6,8]

print(solve(nums))

输入

15, 3, 8
输出结果
3

以上是 程序找到给定数组的任何序列的最大大小,其中每一对在 Python 中都很好 的全部内容, 来源链接: utcz.com/z/363273.html

回到顶部