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;
}
posted @ 2021-12-17 18:36  WRuperD  阅读(25)  评论(0编辑  收藏  举报

本文作者:DIVMonster

本文链接:https://www.cnblogs.com/guangzan/p/12886111.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

这是一条自定义内容

这是一条自定义内容