Pythonでロシアの農民の乗算を適用するプログラム
4つの整数p、q、r、およびkが与えられているとします。ロシア農民乗算法と呼ばれる方法を使用して、(p + q.i)^ r =r+s.iの値を決定します。 rmodkとsmodkの値を返す必要があります。
したがって、入力がp =3、q =0、r =8、k =10000の場合、r mod k=6561のq=0値として、出力は(6561、0)3 ^ 8=6561になります。 。
これを解決するには、次の手順に従います-
- rが0と同じ場合、
- 1を返す
- それ以外の場合、rが1と同じ場合、
- (p mod k、q mod k)を含むペアを返します
- それ以外の場合、r mod 2が0と同じ場合、
- returnsolve((p * p-q * q)mod k、2 * p * q mod k、r / 2、k)
- それ以外の場合、
- ペア(pr、qr)=solve(p、q、r-1、k)
- ((p * pr --q * qr)mod k、(p * qr + q * pr)mod k)を含むペアを返します
例
理解を深めるために、次の実装を見てみましょう-
def solve(p, q, r, k): if r == 0: return 1 elif r == 1: return (p % k, q % k) elif r % 2 == 0: return solve((p*p - q*q) % k, 2*p*q % k, r/2, k) else: (pr, qr) = solve(p, q, r-1, k) return ((p * pr - q * qr) % k, (p * qr + q * pr) % k) print(solve(3, 0, 8, 10000))
入力
3, 0, 8, 10000
出力
(6561, 0)
-
Pythonプログラムでの選択ソート
この記事では、Python3.xでの選択ソートとその実装について学習します。またはそれ以前。 選択ソート アルゴリズムでは、配列は、ソートされていない部分から最小要素を再帰的に見つけて、それを先頭に挿入することによってソートされます。特定の配列での選択ソートの実行中に、2つのサブ配列が形成されます。 すでに並べ替えられているサブ配列。 ソートされていないサブアレイ。 選択ソートを繰り返すたびに、ソートされていないサブアレイの最小要素がポップされ、ソートされたサブアレイに挿入されます。 アルゴリズムの視覚的表現を見てみましょう- それでは、アルゴリズムの実装を見てみましょう-
-
nで割った配列乗算のリマインダーを見つけるためのPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 複数の数値と数値入力nが与えられた場合、除算可能なすべての数値にnを掛けた後、余りを出力する必要があります。 アプローチ まず、arr [i]%nのように余りを計算します。次に、この余りに現在の結果を掛けます。 乗算後、オーバーフローを避けるために同じ余りを取ります。これは、モジュラー演算の分配法則に準拠しています。 ( a * b) % c = ( ( a % c ) * ( b % c ) ) % c 例 def findremainder(arr, lens, n): &n