第一次写二分的题,幸好这个题卡的不严,就马马虎虎过了。。。。。 代码很简单 不说什么了。。。。 #include <cstdlib> #include<cstdio> #include<cstring> using namespace std; const double PI=3.1415926535897932; const double ln=1e-5; double sum; double a[10010]; int main(int argc, char** argv) { int cas,i,j,flg=0,n,f; scanf("%d",&cas); while(cas--){ scanf("%d%d",&n,&f); f++;sum=0;flg=0; for(i=1;i<=n;i++){ scanf("%lf",&a[i]); a[i]*=a[i]; sum+=a[i]; } double lef,rig,mid; lef=0; rig=sum/f; mid=(lef+rig)/2; while(rig-lef>ln){ flg=0; for(i=1;i<=n;i++){ flg+=(int)(a[i]/mid); } if(flg>=f) lef=mid; else rig=mid; mid=(lef+rig)/2; } printf("%.4lf/n",mid*PI); } return 0; }