交互ハーモニックシリーズは、よく知られて収束級数です。
「明らかに」、2の自然対数に収束することは明らかです。
系列は完全に収束するわけではないので、用語を単純に並べ替えることで、必要なものに近づけることができます。シリーズをeに収束させたいとします。私がしなければならないのはこれだけです:
パターンをキャッチしなかった場合、明らかなパターンはありません。仕組みは次のとおりです。
- 正と負の項の観点から交互高調波系列の項を検討します。
- 目標を超えるのに十分な正の用語を足し合わせます(e)。(別名
sum > target
) - 次の否定項を引きます。
- 2に戻ります。
手順2で、の場合、sum == target
別の正の用語を追加する必要があることに注意してください。
これから、次のように各番号に関連付けられたシーケンスを定義できます。
- 上記のアルゴリズムに従ってください
- 各正の項について、1を出力します。
- 負の項ごとに、0を出力します。
このシーケンスを数字の「調和ビットパターン」と呼びましょう。たとえば、eのHBPは次のように始まります。
1, 1, 1, 1, <32 times>, 0, 1, 1, <54 times>, 0, 1, 1, ...
あなたの挑戦:
あなたが与えられます:
- 範囲[-10、10]の合理的な入力ターゲット(注:高調波系列を介して10に到達する場合でも、数百万の用語が必要です)。これは小数(別名
1.1
)である場合もあれば、直接有理数を取る場合もあります(別名12/100
) - 正の
int
n入力。出力する調和ビットパターンの項の数を指定します。
ターゲットの正確な調和ビットパターンを指定した数の用語に出力することが期待されています。スペース区切り値、カンマ区切り、区切りなしなどを出力できます。0と1のパターンが明確に表示され、一貫した分離で左から右に読み取られる限り。
テストケース
>>> 0, 1
1
>>> 0, 2
10
>>> 0, 7
1000010
>>> 1, 10
1101011011
>>> 1.01, 3
110
>>> 1.01, 24
110101101101101101101101
>>> 2.71, 32
11111111111111111111111111111111
>>> 2.71, 144
111111111111111111111111111111110111111111111111111111111111111111111111111111111111111101111111111111111111111111111111111111111111111111111111
>>> -9.8, 100
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
以降は、そのノート-9.8
、最初ので、大きい1
出力されることが周りのどこかである149496620
(値は正確ではないかもしれないので、浮きを介して計算された)番目の用語。
h a p q
をh p q a
節約する代わりに定義すると。