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

hamayanhamayan's blog

*3 or /2 [AtCoder Beginner Contest 100 C]

https://beta.atcoder.jp/contests/abc100/tasks/abc100_c

解説

https://beta.atcoder.jp/contests/abc100/submissions/2691854

3倍する操作は何回でもできるため、2で割る操作を節約しながら行いたい。
すると2で割る操作はどこかの要素に1回行えばいい。
そのため、求めたい答えは2で割る操作を何回行えるかということになる。
よって、各要素について2で最高何回割れるかを求めて、総和を取れば答えになる。

int N, A[10101];
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> N;
    rep(i, 0, N) cin >> A[i];
 
    int ans = 0;
    rep(i, 0, N) {
        while (A[i] % 2 == 0) {
            A[i] /= 2;
            ans++;
        }
    }
    cout << ans << endl;
}