标签:
3 3 3 4 3 3 1 24 5 10 5 1 4 2 3 4 5 6 5 4 2
25.1327 3.1416 50.2655
1 #include<iostream> 2 #include<stdio.h> 3 #include<cmath> 4 using namespace std; 5 int pi,pe,num;//pi是派的数量,pe是人的数量,num是可以分到的人数 6 double pie[10005];//pie的大小 7 double mi,ma,mid;//最少能分到的和最多能分到的,mid是二分法的中间变量 8 double pai=acos(-1.0);//pi的定义 9 int main() 10 { 11 int T; 12 cin>>T; 13 while(T--) 14 { 15 cin>>pi>>pe; 16 pe++;//pe个朋友加上自己 17 ma=0.0; 18 mi=0.0; 19 for(int i=0;i<pi;i++) 20 { 21 cin>>pie[i]; 22 pie[i]=pai*pie[i]*pie[i]; 23 ma+=pie[i]; 24 if(pie[i]>mi) 25 mi=pie[i]; 26 } 27 ma/=pe; 28 mi/=pe; 29 while(mi+0.00001<ma)//因为两个都是double型无法相等所以+0.0001控制 30 { 31 mid=(ma+mi)/2; 32 num=0; 33 for(int i=0;i<pi;i++) 34 { 35 num+=(int)(pie[i]/mid); 36 } 37 if(num>=pe)mi=mid;//足够,往大继续二分 38 else ma=mid;//不够,往小继续二分 39 } 40 printf("%.4lf\n",mi); 41 } 42 return 0; 43 }
标签:
原文地址:http://www.cnblogs.com/Annetree/p/5662794.html