1 条题解

  • 0
    @ 2026-9-30 12:58:25

    C++ :

    #include <cstdio>
    /*
      操作数组:每轮对每个数「乘 3 或除以 2」,且每轮必须至少有一个数乘 3、另一个数除以 2。
      乘 3 不会引入因子 2(3 是奇数),也不会消去因子 2,
      所以整个过程中「总共能执行多少次除以 2」恒等于所有 ai 的因子 2 个数之和 Σ v2(ai)。
      又因为只要还有偶数就能凑出一次除以 2,只要有数就能凑出一次乘 3,
      所以最大轮数就是 Σ v2(ai)。
      样例 2184(2^3) 2126(2^1) 1721(0) 1800(2^3) 1024(2^10) 2528(2^5)
           3360(2^5) 1945(0) 1280(2^8) 1776(2^4) -> 3+1+0+3+10+5+5+0+8+4 = 39。
    */
    static long long a[100005];
    int main(){
        int n;
        if(scanf("%d", &n) != 1) return 0;
        long long cnt = 0;
        for(int i = 1; i <= n; i++){
            scanf("%lld", &a[i]);
            while(a[i] % 2 == 0){ a[i] /= 2; cnt++; }
        }
        printf("%lld\n", cnt);
        return 0;
    }
    
    
    • 1

    信息

    ID
    2838
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者