题目链接
思路:贪心方法是把大数尽量多开方几次,所以每次选择最大的两个数拿出来开方。因为开方对于大数变小的幅度更大,所以对它多开方
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <iostream>
#include <cmath>
#include <vector>
#include <map>
#include <stack>
#include <queue>
using namespace std;
typedef long long ll;
const int MAX=0x3f3f3f3f;
const int N=110;
double ans;
int main(){
int n;
cin>>n;
priority_queue<double> q; //类型为double
for(int i=0;i<n;i++){
double a;
cin>>a;
q.push(a);
}
while(q.size()>1){
double now1=q.top();
q.pop();
double now2=q.top();
q.pop();
double m=2*sqrt(now1*now2);
q.push(m);
}
double ans=q.top();
printf("%.3f\n",ans);
}