2

log(base "e")、sin、tan、sqrt(平方根のみ)関数と基本的な算術演算子(+-* / mod)でのみ使用できます。「e」定数もあります。

私はこれらの制限についてDeluge(zoho.com)でいくつかの問題を実験しています。有理(分数)基数と指数のべき乗を実装する必要があります。

4

2 に答える 2

3

計算したいとしますpow(A, B)

B2を底とするの表現を考えてみましょう。

B = b[n]   * pow(2, n    ) +
    b[n-1] * pow(2, n - 1) +
    ...
    b[2]   * pow(2, 2    ) +
    b[1]   * pow(2, 1    ) +
    b[0]   * pow(2, 0    ) +
    b[-1]  * pow(2, -1   ) +
    b[-2]  * pow(2, -2   ) +
    ...

 = sum(b[i] * pow(2, i))

ここでb[x]、またはは2の整数乗です(0つまり、、、、、、、)。1pow(2, y)1241/21/41/8

それで、

pow(A, B) = pow(A, sum(b[i] * pow(2, i)) = mul(pow(A, b[i] * pow(2, i)))

したがって、pow(A, B)乗算と平方根演算のみを使用して計算できます。

于 2010-12-14T14:17:41.833 に答える
1

e ^ xを実行する関数F()がある場合、ここでeは定数、xは任意の数であり、次のように実行できます。(aは基数、bは指数、lnはlog-e)

a ^ b = F(b * ln(a))

e ^ xを実行するF()がない場合は、注意が必要です。指数(b)が有理数である場合、ある種のループを使用して、b = m/nとなる整数mとnを見つけることができるはずです。mとnを取得したら、aをm回乗算してa ^ mを取得し、次にaをn回乗算してa ^ nを取得し、a ^ m / a^nを除算してa^を取得する別のループを作成します。 (m / n)、これはa^bです。

于 2010-12-14T14:07:16.327 に答える