来源:互联网 发布:天津空港菜鸟网络 编辑:程序博客网 时间:2024/04/20 02:06

链接

#include<bits/stdc++.h>using namespace std;#define PI 3.141592653589int main(){    int n,f,t;    cin >> n >> f;    double r=0,l=0,mid;    double num[10000+10];    for(int i=0;i<n;i++){        cin >> t;        num[i] = t*t*PI;        r = max(r,num[i]);    }    while(r-l>1e-5){        int ans = 0;        mid = (l+r)/2;        for(int i=0;i<n;i++){            ans += num[i]/mid;        }        if(ans<f+1) r = mid;        else l = mid;    }    printf("%.3lf\n",l);    return 0;}//使用二分法尝试



开始不知道是样例有问题,还是自己代码存在小bug,一直不通过,重写之后没问题,一上午心情都没了

好吧,最终发现是因为pi的值最开始不精确导致的,以后这类值最好使用acos(-1.0)

原创粉丝点击