AT4156题解

· · 题解

题面

本题是一道贪心题,对于每一个 a_i,乘 3 是没有影响的(不管怎么乘都是整数)。但是除以 2 是有次数限制的,最多是 a_i 含有的 2 的个数。贪心的策略就出来了:每次只对 1 个还可以除以 2 的 a_i 进行处于 2 操作,则操作次数就是所有 a_i 含有 2 的个数的和。

代码

  #include<bits/stdc++.h>
  using namespace std;
  int n,a,ans;
  int main()
  {
      scanf("%d",&n);
      for(int i=1;i<=n;i++){
          scanf("%d",&a);
          while(a%2==0)ans++,a/=2;//累加
      }
      printf("%d",ans);
      return 0;
  }