-2

与えられた値 'a' および 'y' に対して、b∈N および a>0 に対して x = a^b < y となる最大 x 値を見つける方法。たとえば、y=14 で a = 2 が与えられた場合、x は 8 でなければなりません。つまり、[8.15] の y のすべての値について、x は 8 でなければなりません。同様に、[9,26] の y のすべての値について] 、x は 9 でなければなりません。

4

2 に答える 2

2

ベースaでログを使用できます。そのような関数はに存在しませんが<cmath>、あなたがその式を覚えているなら

log (base a, c) = log (base e, c) / log (base e, a)

cmathのlog(自然対数)関数でそれを行うことができます。

int exponent = log(y)/log(a); //truncates to the floor, just what we need.
int answer = a to the power of exponent
于 2012-11-07T15:22:42.633 に答える
0

非常に明白なアルゴリズム化タスク...ベースの整数部分(yの対数)を取り、その累乗にaを上げます。

#include <cmath>

int exponent = (int)(log(y) / log(a)); // base-a logarithm of y, truncated to a whole number
int x = (int)pow(a, exponent); // a raised to that power
于 2012-11-07T15:23:47.060 に答える