題目描述:
/**
給出一個含有n個數(shù)字的序列a1,a2,a3,...an,可以進(jìn)行以下操作:
一次操作定義為對這個序列的每個數(shù)字進(jìn)行以下兩種改變之一:
1.ai ÷ 2
2.ai × 3
每一次的操作中颇玷,必須保證至少有一個數(shù)字是第1種改變就缆;
并且經(jīng)過每次操作后竭宰,每一個數(shù)字都必須是整數(shù)份招。
牛牛得知锁摔,每進(jìn)行一次操作,他就可以得到一顆西瓜糖谐腰,
但是由于孱弱的數(shù)學(xué)功底怔蚌,
他不知道何時該對某一個數(shù)字進(jìn)行第一種還是第二種改變桦踊,
這使得他十分糾結(jié),于是他找來了睿智的你籍胯,希望你幫他計算出杖狼,
他最多可以得到多少顆西瓜糖妖爷。
輸入描述:
第一行:一個整數(shù)n絮识,表示序列中數(shù)字的個數(shù),1 <= n <= 10000熄攘;
第二行:n個數(shù)字彼念,每個數(shù)字ai滿足1 <= ai <= 109。
輸出描述:
一個整數(shù)哲思,表示最多可以得到的西瓜糖的顆數(shù)吩案。
輸入例子1:
2
1 4
輸出例子1:
2
輸入例子2:
4
3 3 5 9
輸出例子2:
0
*/
思路如下:
統(tǒng)計每個數(shù)含有多少個2的因子
代碼如下:
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
int N, cnt=0;
scanf("%d", &N);
for(int i=0; i<N; i++){
int data;
scanf("%d", &data);
while(data && !(data&1)){
cnt++;
data>>=1;
}
}
printf("%d", cnt);
return 0;
}