您的位置:首页 > 其它

【杭电】[2199]Can you solve this equation?

2016-07-26 17:01 211 查看




二分搜索答案

与Y进行比较可知道mid与res的大小关系

注意x的取值为0~100

因为函数f(m)=8*m4+7*m3+2*m2+3*m+6

在0~100上单调递增

所以如果
Y<f(0)||Y>f(100)
是没有结果的

#include<stdio.h>
double n;
double f(double m) {
return 8*m*m*m*m+7*m*m*m+2*m*m+3*m+6;
}
bool judge(double m) {
if(f(m)>n)
return true;
else
return false;
}
int main() {
int T;
scanf("%d",&T);
while(T--) {
scanf("%lf",&n);
if(n<f(0.0)||n>f(100.0)) {
printf("No solution!\n");
continue;
}
double r=10000000000,l=0,res;
while(r-l>1e-6) {
double mid=(r+l)/2;
if(judge(mid)) {
res=mid;
r=mid;
} else
l=mid;
}
printf("%.4lf\n",res);
}
return 0;
}


题目地址:【杭电】[2199]Can you solve this equation?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  杭电