私はコーディングコンテストのウェブサイトで見つけたプログラムを書いています。問題を解決する方法をある程度理解しましたが、数学の部分で立ち往生しています。問題を完全に希釈して、必要なものを示しています。
最初に、数値がシーケンスの一部であるかどうかを確認する必要があります。私のシーケンスは2*a+1
、a がシーケンスの前の要素であるか、シーケンスの n 番目の項目を取得する 2^n-1 です。1,3,7,15,31,63です...
シーケンス全体を作成して数値が存在するかどうかを確認したくはありませんが、これを行うためのより迅速な方法が何であるかはわかりません。
2 番目に、たとえば 25 という数字が与えられた場合、シーケンス内でこの数字の次に大きい数字を見つけたいとします。したがって、25 の場合は 31、47 の場合は 63、8 の場合は 13 になります。
シーケンス全体を作成せずにこれらのことを行うにはどうすればよいですか。
ここで同様の質問をさまざまなシーケンスで見ましたが、これを解決する方法がまだわかりません