GitBook

这里写图片描述 这里写图片描述

二分搜索答案 与Y进行比较可知道mid与res的大小关系

注意x的取值为0~100 因为函数f(m)=8m4+7m3+2m2+3m+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?