WARush

SRMの結果とか、解けた問題のコードを書いていきます

SRM664 Div1 Easy "BearPlays"

解法

例のごとく他人だより。以下、参考にさせていただきました。m(_ _)m
mayokoex.hatenablog.com

事後

あ^~あるはずのない周期性に賭けてしまったんじゃ^~

ソースコード

class BearPlays {
    public:
    int pileSize(int A, int B, int K) {
        long long a = A;
        long long b = B;
        long long s = a + b;

        int m = pow_mod(2, K, s);

        long long mi = min(a, b);

        long long res = mi * m % s;

        long long ans = min(res, s - res);

        return (int)ans;
    }

    // a ^ b % mod 繰り返し2乗法!
    long long pow_mod(long long a, long long b, long long mod) {
        long long r = 1;
        while (b > 0) {
            if ((b & 1) != 0) {
                r *= a;
                r %= mod;
            }
            a *= a;
            a %= mod;
            b >>= 1;
        }
        return r;
    }

};