我们的化学生物学家发明了一种新的叫stripies非常神奇的生命。该stripies是透明的无定形变形虫似的生物,生活在果冻状的营养培养基平板菌落。大部分的时间stripies在移动。当他们两个碰撞,会有新stripie生成,而旧的不见了。经过长期研究,他们发现新stripies的体重不等于消失的stripies的体重,而是:如果一个质量为m1和m2的stripies相撞,生成的stripies体重是2*sqrt(m1*m2) 现在,科学家们想知道,如果stripies两两碰撞至只剩一个,则这一个的最小质量是多少?
Input
第一行输入 N (1 <= N <= 100) :stripies的数量. 接下来的 N 行是stripies的质量(1<=m<=10000)
Output
输出最小质量。保留至小数点后三位
Sample Input
3
72
30
50
Sample Output
120.000
Hint
样例解释: 72与50合并,产生120,120与30合并,产生120
解法:
从大的开始融合
1 #include <iostream>
2 #include <set>
3 #include <sstream>
4 #include <queue>
5 #include <math.h>
6 #include <algorithm>
7 #include <stdio.h>
8 using namespace std;
9
10 const int MAX = 100000 + 1000;
11
12
13 int main()
14 {
15 double a[120];
16 int n;
17 cin>>n;
18 for(int i =0;i<n;i++)
19 cin>>a[i];
20 sort(a,a+n);
21
22 for(int i = n -1;i>0;i--)
23 {
24 a[i-1] = 2*sqrt(a[i]*a[i-1]);
25 }
26
27 printf("%.3lf
",a[0]);
28
29 return 0;
30 }