1 条题解
-
0
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
- 上传者