概述:给定一个函数y=f(x),给定y的值,在1-100的范围内,求x的值。
思路:二分搜索最最最最最最入门的题,直接二分就可以了。
感想:终于找到一个一眼就能看出答案的题了- =。
#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
inline double f(double x)
{
return 8 * pow(x, 4) + 7 * pow(x, 3) + 2 * pow(x, 2) + 3 * x + 6;
}
int main()
{
int n;
double y;
cin >> n;
while (n--)
{
cin >> y;
double x1 = 0, x2 = 100;
if ((f(0)>y&&f(100)>y) || (f(0)<y&&f(100)<y))
{
cout << "No solution!\n";
continue;
}
while (x2 - x1 >=1e-7)
{
if (f((x1 + x2) / 2)>y)
x2 = (x1 + x2) / 2;
else if (f((x1 + x2) / 2) == y)
break;
else
x1 = (x1 + x2) / 2;
}
printf("%0.4lf\n", (x1 + x2) / 2);
}
return 0;
}
8356

被折叠的 条评论
为什么被折叠?



