您的位置:首页 > 其它

7/21 B 解题报告

2015-07-22 09:01 218 查看

7/21 B 解题报告

仍然大水,求解一个方程,二分经典用法。

以下是代码(可直接AC):

#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;

int main()
{
int t;
long long y;
long double res;
long double tmp;
double low=0,high=100;
double mid=53;
bool flag;
cin>>t;
while(t--)
{
flag=false;
low=0;high=100;mid=53;
cin>>y;
if(y<6||y>807020306)//先特判一些答案
cout<<"No solution!\n";
else{
while(low<high)//二分
{
res=8*mid*mid*mid*mid+7*mid*mid*mid+2*mid*mid+3*mid+6;
//tmp=mid-ceill(mid);
if(abs(res-y)<1e-4)
{
flag=true;
cout<<setiosflags(ios::fixed)<<setprecision(4);
cout<<mid<<endl;
break;
}else{
if(res>y)
{
high=mid;
mid=(low+high)/2;
}else{
low=mid;
mid=(low+high)/2;
}
}

}
if(!flag)
cout<<"No solution!\n";
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: