Pythonでのプライムアレンジメント
1からnまでの順列の数を見つける必要があるため、素数は素数インデックスに配置されます。答えは大きくなる可能性があり、10 ^ 9 + 7を法とする答えを返します。したがって、n =5の場合、出力は12になります。したがって、12の順列があります。 1つの可能な順列は[1,2,5,4,3]であり、1つの無効な順列は[5,2,3,4,1]です。これは、5が素数ではないインデックス1に配置されているためです。
これを解決するには、次の手順に従います-
- getNumという1つのメソッドを次のように定義します-
- prime:=2から100までのすべての素数のリスト
- set i:=0
- whilei<プライムリストの長さ
- prime [i]> nの場合、iを返します
- i:=i + 1
- プライムの長さを返す
- 実際の問題は次のように解決されます
- x:=getNum(n)、p:=1、m:=10 ^ 9 + 7
- for i:=xから0まで
- p:=p * i
- p:=p mod m
- for i:=n –xから0まで
- p:=p * i
- p:=p mod m
- return p
例
理解を深めるために、次の実装を見てみましょう-
class Solution(object): def getNum(self,n): primes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97] i = 0 while i < len(primes): if primes[i]>n: return i i+=1 return len(primes) def numPrimeArrangements(self, n): """ :type n: int :rtype: int """ x = self.getNum(n) p = 1 m = 1000000000+7 for i in range(x,0,-1): p*=i p%=m for i in range(n-x,0,-1): p*=i p%=m return p ob1 = Solution() print(ob1.numPrimeArrangements(100))
入力
100
出力
682289015
-
Pythonプログラムの数値の一意の素因数の積
この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 数nが与えられた場合、利用可能なすべての固有の素因数の積を見つけて返す必要があります。 例 Input: num = 11 Output: Product is 11 説明 ここで、入力数は11で、素因数は1つだけで、11です。したがって、それらの積は11です。 アプローチ1 i=2からn+1までのforループを使用して、iがnの因数であるかどうかを確認し、次にiが素数自体であるかどうかを確認します。そうであれば、製品を製品変数に格納し、iが=nになるまでこのプロセスを続けます。 例 def produ
-
Pythonのissuperset()
この記事では、Pythonでのissuperset()と、さまざまな分野でのその実装について学習します。 このメソッドは、セットBのすべての要素に引数として渡されるすべての要素セットAが含まれている場合はブール値Trueを返し、Aのすべての要素がBに存在しない場合はfalseを返します。 これは、BがAのスーパーセットである場合、それを意味します returns true; else False 例 いくつかの例を見てみましょう A = {'t','u','t','o','r','i',