2

問題は次のようになります。

numberNがあり、その値を使用して数値ピラミッドを作成するとします。= 4の数値ピラミッドは次のNようになります。

      3
    2 3
  1 2 3
0 1 2 3

同様に、次のようになります。

      0
    1 1
  2 2 2
3 3 3 3

言うまでもなく、インデックスを使用してピラミッドのすべての番号をトラバースする方法を知りたいです。私は次のような機能を探しています:

f(i) = [number from pyramid]

iインデックス番号です。インデックスのみに依存する (つまり、再帰的でない) 場合に最適です。

次のようなインデックス付きリストでパターンを探してみました

N=4 ([0 0] [1 1] [2 1] [3 2] [4 2] [5 2] [6 3] [7 3] [8 3] [9 3])

各ペアの最初の数値はインデックスで、2 番目はピラミッドの数値です。

残念ながら、明確なパターンを見つけることができませんでした。

4

2 に答える 2

4

Egorの答えの詳細:

の最初の出現X

sum(0<=i<=X | i) = X(X+1)/2

いくつかの index があると仮定するとi、最初に関数が離散的ではないかのように解決し、最後に切り捨てます。

X(X+1)/2 = i      <=>
X^2 + X - 2i = 0

次の二次方程式を解きます。

X = (-1 +/- sqrt(1 + 8i)) / 2

単純化し、負の解を無視して切り捨てると、Egor によって与えられる式が得られます。

f(i) = floor((sqrt(8i+1)-1)/2)
于 2013-05-19T16:17:44.533 に答える