solution-cf1609a
简单思维题
思路
首先我们可以吧每个数都分解成\(x * 2^y\)形式。我们把这些数按\(x\)排序,再把这些2次幂全乘到最大的那个\(x\)上即可。
代码
#include<bits/stdc++.h>
using namespace std;
long long a[20];
int main(){
int t;
cin>>t;
while(t--){
long long ans = 0;
int n;
cin>>n;
long long cnt = 0;
for(int i = 1; i <= n; i++){
cin>>a[i];
while(a[i] % 2 == 0){
a[i] /= 2;
cnt++;
}
}
sort(a+1, a+n+1);
a[n] *= pow(2, cnt);
for(int i = 1; i <= n; i++){
ans += a[i];
}
cout<<ans<<endl;
}
return 0;
}