PythonでNを1に減らす最大の操作を見つける
2つの数PとQがあり、それらが数N =(P!/ Q!)を形成するとします。可能な最大数の操作を実行して、Nを1に減らす必要があります。各操作で、NがXで割り切れる場合、NをN/Xに置き換えることができます。可能な最大数の操作を返します。
したがって、入力がA =7、B =4の場合、Nは210、除数は2、3、5、7であるため、出力は4になります。
これを解決するには、次の手順に従います-
-
N:=1000005
-
因数:=サイズNの配列で、0で埋める
-
メインの方法から、次のようにします-
-
2からNの範囲のiの場合、実行します
-
factor [i]が0と同じ場合、
-
iからNの範囲のjについては、各ステップでiずつ更新します。
-
ファクター[j]:=ファクター[j / i] + 1
-
-
-
-
1からNの範囲のiの場合、実行します
-
ファクター[i]:=ファクター[i]+ファクター[i-1];
-
-
リターンファクター[a]-ファクター[b]
例
理解を深めるために、次の実装を見てみましょう-
N = 1000005 factors = [0] * N; def get_prime_facts() : for i in range(2, N) : if (factors[i] == 0) : for j in range(i, N, i) : factors[j] = factors[j // i] + 1 for i in range(1, N) : factors[i] += factors[i - 1]; get_prime_facts(); a = 7; b = 4; print(factors[a] - factors[b])
入力
7,4
出力
4
-
Pythonで最大k個の否定演算を実行して最大合計を見つけるプログラム
numsという要素のリストがあり、別の値kもあるとします。ここで、numsから要素を選択してそれを否定する操作について考えてみましょう。正確にk個の操作を実行できます。生成できる最大の結果の合計を見つける必要があります。 したがって、入力がnums =[2、1、-6、-2] k =3のような場合、-6と-2を否定すると、出力は9になり、1は[2、-1、6 、2]そしてその合計は9です。 これを解決するには、次の手順に従います- n:=numsのサイズ nが0と同じ場合、 0を返す リスト番号を並べ替える 0からn-1の範囲のidxの場合、実行 num
-
Pythonで最大の建物の高さを見つけるプログラム
値nと、制限と呼ばれるペアの別のリストがあるとします。都市にn棟の新しい建物を建てたいと思っています。ただし、制限はほとんどありません。私たちは一列に建てることができ、建物には1からnまでのラベルが付けられています。制限には2つのパラメーターがあるため、restrictions [i] =(id_i、max_height_i)は、id_iの高さがmax_height_i以下でなければならないことを示します。新しい建物の高さに関する市の制限は次のとおりです- 各建物の高さは0または正の値である必要があります。 最初の建物の高さは0でなければなりません。 隣接する2つの建物の高さ