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

Pythonで前後に少数の人がいるn人のラインで可能な位置の数を見つけるためのプログラム


n、a、bの3つの数があるとします。私たちがn人の列に並んでいると考えてください。そして、私たちはラインでの自分の位置に気づいていません。しかし、私たちは、少なくとも私たちの前に何人かの人々がいて、私たちの後ろにせいぜいb人の人々がいることを知っています。可能なポジションの数を見つける必要があります。

したがって、入力がn =10 a =3 b =4の場合、出力は5になります。これは、ラインに10人がいて、少なくとも3人が前にいて、最大で4人が後ろにいるためです。つまり、私たちはどこにでもいます[0、1、2、3、4]。位置0にいるときは、9人が前に、0人が後ろに、というように続きます。

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

  • a + b

    • b+1を返す

  • a + b> =nの場合、

    • nを返す-a

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

def solve(n, a, b):
   if a + b < n:
      return b + 1
   if a + b >= n:
      return n - a

n = 10
a = 3
b = 4
print(solve(n, a, b))

入力

10, 3, 4

出力

5

  1. Pythonで数値の三角形の行lの最初のイベント番号の位置を見つけるプログラム

    以下のような数の三角形を生成していると仮定します       1     1 1 1   1 2 3 2 1 1 3 6 7 6 3 1 ここで、各行の要素は、その上に3つの数字を追加することによって生成されます。ここで、行番号がlの場合。その行の最初の偶数の位置を見つける必要があります。位置の値は1から始まります。 したがって、入力がl =5の場合、出力は2になります           1       1  1  1 &nb

  2. 可能なBSTの数を見つけるプログラムは、Pythonのn個の異なるノードを使用して生成できます

    数nがあるとします。 [1,2、...、n]のような数がある場合、これらのn個の値を使用して形成できるBSTの数を数える必要があります。答えが大きすぎる場合は、結果を10 ^ 9+7で変更します。 したがって、入力がn =3の場合、出力は14になります。 これを解決するために、次の手順に従います a:=値が[0、1]のリスト m:=10 ^ 9 + 7 max_n:=1000 2からmax_n+1の範囲のkについては、 (1 +リストのすべての要素の合計(a [i] * a [k --i] for all i in range(1、k)))modmをaの最後に挿入します