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

hamayanhamayan's blog

POW [AtCoder Beginner Contest 205 C]

https://atcoder.jp/contests/abc205/tasks/abc205_c

解説

https://atcoder.jp/contests/abc205/submissions/23456949

発想力が必要となる問題。
真面目に計算するのは精度的に無理なので、logか…?とも思ったがこちらも精度が心配で、300点っぽくない。
大小関係だけを今回は要求していることを考慮していくと、A2やB2は非負になるので、A2,B2をかけることは
0以外は大小関係に影響を及ぼさない。
0が入ると大小関係が崩れる、最終的にはAとBかA2とB2の比較になるので、あまり気にしなくてもいい。 (心配なら場合分けしてもいいと思う。よくわからないなら場合分けする方針はいい保険だと思う) ということは、Cはmod2っぽく考えてもよいことになる。
正確には0になると、累乗としては意味合いが変わってしまうので、奇数ならC=1として考えて、
偶数ならC=2として考えて問題を解くことで大小関係が分かる。
C=1,2ならlong long上であれば計算が可能なので、計算して比較すると答えが得られる。

ll A, B, C;
//---------------------------------------------------------------------------------------------------
ll pow(ll X, ll Y) {
    if (Y == 1) return X;
    return X * X;
}
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> A >> B >> C;

    if (C % 2 == 0) C = 2;
    else C = 1;

    if (pow(A, C) == pow(B, C)) cout << "=" << endl;
    else if (pow(A, C) < pow(B, C)) cout << "<" << endl;
    else cout << ">" << endl;
}