题目大意:有一种生物两个遇到后会合成一个质量为2sqrt(m1*m2),给你一些这种生物的质量,问合成的最小质量为多少。
解题思路:质量大的先被拿来合成
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const int MAX_N = 105;
int N;
double ans;
int m[MAX_N];
bool cmp(int a, int b)
{
return a>b;
}
void init()
{
for(int i=0; i<N; i++){
scanf("%d", &m[i]);
}
sort(m, m+N, cmp);
ans = m[0];
}
void f()
{
for(int i=1; i<N; i++){
ans = 2 * sqrt(ans*m[i]);
}
}
int main()
{
while(~scanf("%d", &N)){
init();
f();
printf("%.3f", ans);
}
return 0;
}