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

Pythonで特定の漸化式のn番目の項を検索します


bnと呼ばれる数列があるとすると、これはb1=1やbn+1 / bn=2nのような漸化式を使用して表されます。与えられたnのlog2(bn)の値を見つける必要があります。

したがって、入力が6の場合、出力はlog2(bn)=(n *(n-1))/ 2 =(6 *(6-1))/ 2 =15

として5になります。

この関係を次のように解くことで、この問題を解くことができます-

b n + 1 / b n =2 n

b n / b n-1 =2 n-1

b 2 / b 1 =2 1 、上記のすべてを掛けると、次のようになります

(b n + 1 / b n )。(b n / b n-1 )……(b 2 / b 1 )=2 n +(n-1)+………。+ 1

したがって、b n + 1 / b 1 =2 n(n + 1)/ 2

1 + 2 +3+として………。 +(n-1)+ n =n(n + 1)/ 2

したがって、b n + 1 =2 n(n + 1)/ 2 * b 1 ;初期値b1を想定しています。 =1

したがって、b n + 1 =2 n(n + 1)/ 2

nを(n + 1)に置き換えると、次のようになります。

b n =2 n(n-1)/ 2

両側のログを取ることで、私たちは得ます、

log 2 (b n )=n(n-1)/ 2

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

def add_upto_n(n):
   res = (n * (n - 1)) / 2
   return res
n = 6
print(int(add_upto_n(n)))

入力

6

出力

15

  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のインデックスでリストの要素を検索する

    2つのリストを考えてみましょう。 2番目のリストの要素は、最初のリストの要素のインデックス位置と見なす必要がある数値です。このシナリオでは、以下のPythonプログラムがあります。 マップとgetitemを使用 getitemマジックメソッドを使用してリストアイテムにアクセスできます。これをmap関数と一緒に使用できるため、2番目のリストの要素をインデックスとして取得する最初のリストから結果を取得できます。 例 listA = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'] listB =