POJ 1862 最小质量

来源:互联网 发布:财贸研究怎么样知乎 编辑:程序博客网 时间:2024/05/16 11:22
题意:近来,鸨神养了一些小细菌st,为了喜迎地大60周年,鸨神将st们组成60周年的图案。在组成图案的过程中,鸨神发现当两个st碰撞在一起时,会生成一个新的st,而之前的两个st就消失了。作为一个严谨的ACMer,鸨神测定了两个st的质量,分别是m1和m2。而新生成的st的质量等于2*sqrt(m1*m2)。鸨神知道了原来两个st不是单纯的叠加在一起生成的新st,而是经过反应得到的。
充满求知欲的鸨神想要知道,如果所有st经过这样的反应,最终形成一个新st,那这个st的质量最小可能是多少?
   可是鸨神不想一个个去计算各种可能的质量,你能帮他写一个程序,直接得到最小的质量吗?现在假设每次反应都只有两个st进行,没有多个。
Input
输入第一行包含一个整数T,代表有T个细菌st(T<=100)。
接下来的T行,每行都包含一个整数mi,代表细菌相应的质量(1<=mi<=10000)
Output
输出只有一行,输出最终细菌st可能的最小质量M。(结果保留三位小数)

思路:这做过……水过……
#include<cstdio>#include<cmath>#include<iostream>#include<algorithm>using namespace std;bool cmp(int a,int b){    return a>b;}int main(){int i,n,a[105];double s;cin>>n;for(i=0;i<n;i++)  cin>>a[i];    sort(a,a+n,cmp);s=a[0];for(i=1;i<n;i++)s=2*sqrt(s*a[i]);printf("%.3f\n",s);return 0;}

原创粉丝点击