Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonですべてのペアが適切である特定の配列の任意のシーケンスの最大サイズを見つけるプログラム


サイズnのシーケンス番号があるとします。すべてのペア(p、q)が適切なペアであるnumsのサブシーケンスの最大サイズを見つける必要がありますか?ペイトは、次の条件の少なくとも1つを保持している場合にのみ、適切なペアであると言われます。1.pの個別の素数除数の数のパリティがbのパリティと等しい。たとえば、値18には、2と3の2つの異なる素数の約数があります。2。pのすべての正の約数の合計のパリティはqと同じです。

したがって、入力がnums =[2,3,6,8]の場合、出力は3

になります。

Pythonですべてのペアが適切である特定の配列の任意のシーケンスの最大サイズを見つけるプログラム

これを解決するには、次の手順に従います-

  • n:=numsのサイズ
  • 3つの空のリストcnt、total、resultを定義します
  • numsの各iについて、
    • count:=0、tot:=0
    • prime:=新しいリスト
    • numsのjごとに、
      • (2からjの範囲のすべてのkに対してj mod k)が真の場合、
        • プライムの最後にjを挿入
    • プライムの各jについて、
      • i mod jが0の場合、
        • count:=count + 1
    • カウントが偶数の場合、
      • cntの最後に「odd」を挿入
    • それ以外の場合、
      • cntの最後に「偶数」を挿入
    • 1からiの範囲のjについては、
      • i mod jが0と同じ場合、
        • tot:=tot + j
    • totが奇数の場合、
      • 合計の最後に「奇数」を挿入
    • それ以外の場合、
      • 合計の最後に「偶数」を挿入
  • 0からn-2の範囲のiについては、
    • i +1からn-1の範囲のjの場合、do
      • cnt[i]がcnt[j]と同じであるか、total[i]がtotal[j]と同じである場合、
        • 結果の最後にnums[i]を挿入
        • jがn-2と同じ場合、
          • 結果の最後にnums[j]を挿入
  • result:=resultからの新しいセットからの新しいリスト
  • 結果のサイズを返す

理解を深めるために、次の実装を見てみましょう-

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

  1. Pythonで指定されたバイトニックシーケンスのバイトニックポイントを見つける

    ビットニックシーケンスがあるとすると、その中にビットニックポイントを見つける必要があります。私たちが知っているように、Bitonicシーケンスは、最初に厳密に増加し、特定のポイントの後に厳密に減少する数列です。この点はバイトニック点です。シーケンスの増加のみまたは減少のみの場合、バイトニックポイントは使用できません。 したがって、入力が[7、8、9、12、10、6、3、2]の場合、出力は12になります。 これを解決するには、次の手順に従います- 関数binary_search(array、l、r)を定義します l <=rの場合、- m:=(l + r)/ / 2 array

  2. 与えられたサイズのグループで配列を逆にするPythonプログラム?

    =1の場合、配列内のすべての要素を逆にします。 アルゴリズム Revarray(A,n,p) /* A is an integer Array, n is the size of an array and every sub-array of size p starting from the beginning of the array and reverse it.*/ Step 1: i is the loop control variable which is initialized by 0. Step 2: using while loop check i is less than