はまやんはまやんはまやん

hamayanhamayan's blog

Exponential [AtCoder Beginner Contest 097 B]

https://beta.atcoder.jp/contests/abc097/tasks/abc097_b

解法

https://beta.atcoder.jp/contests/abc097/submissions/2506952

まずは全探索できるものを探す。
今回はXが小さいので、bを全探索してみよう。
 
bは1以上なのだが、bが1の時はべき乗が全て1になるので、2以上の数で考える。
答えの候補となるのは、b,b^2,b^3,...であるが、この中でX以下のものだけ見れば良い。
よって、変数xを答えの候補とすると、x≦Xを満たすまで、xにbを掛けていって答えを随時更新する。

int X;
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> X;
 
    int ans = 1;
    rep(b, 2, X) {
        int x = b * b;
        while (x <= X) {
            ans = max(ans, x);
            x *= b;
        }
    }
    cout << ans << endl;
}