7/21 C 解题报告

来源:互联网 发布:淘宝早晨跑名声不好 编辑:程序博客网 时间:2024/06/14 21:37

7/21 C 解题报告

这个题可以用数学方法,找最小值,求导后在区间内只有一个零点,和解方程又是一样的。如果直接分三个点后去查的话就有一些误差。
以下是代码(可直接AC):

#include <iostream>#include <cmath>#include <iomanip>using namespace std;int main(){    int t;    long long y;    long double res,resl,resr;    long double tmp;    double low=0,high=100;    double mid=50;    bool flag;    cin>>t;    while(t--)    {        low=0;high=100;mid=50;        cin>>y;            while(low<high)//二分            {              res=42*mid*mid*mid*mid*mid*mid+48*mid*mid*mid*mid*mid+21*mid*mid+10*mid-y;                if(abs(res)<1e-7)                {                    cout<<setiosflags(ios::fixed)<<setprecision(4);                    cout<<6*mid*mid*mid*mid*mid*mid*mid+8*mid*mid*mid*mid*mid*mid+7*mid*mid*mid+5*mid*mid-y*mid<<endl;                    break;                }else{                    if(res>0)                    {                        high=mid;                        mid=(high+low)/2;                    }else{                        low=mid;                        mid=(high+low)/2;                    }                }            }    }    return 0;}
0 0
原创粉丝点击