题目标号:1001
题目大意:对于8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 == Y这个函数,Y给定,求X,并小数点4位输出。找不到显示No solution!
解题思路:其实没什么难度,主要考察两点吧:第一,二分;第二,函数求解X。从函数本身看,是个递增函数,所以判断是否找到很容易,一个条件语句即可。二分是个while循 环,前后相差不能大于0.000001,这个可以自己设置,然后就用函数来判断中间的点在哪里,把点赋值给前还是后,然后输出即可。
解题感想:算是初次遇到这样的题目,开始懵了好久,不知道如何下手,后来联系所学才一点点打开思路。
#include<math.h>
#include<iostream>
using namespace std;
double YJY(double x)
{
return 8*pow(x,4)+7*pow(x,3)+2*pow(x,2)+3*x+6;
}
int main()
{
int n;
double a,b,c,d;
cin>>n;
while(n--)
{
cin>>a;
if(a>YJY(100)||a<YJY(1))
{
printf("No solution!\n");
}
else
{
c=0.0,d=100.0;
while(d-c>1.0E-6)
{
b=(c+d)/2;
if(YJY(b)<a)
c=b;
else
d=b;
}
printf("%.4lf\n",b);
}
}
return 0;
}