我又来水博客啦

这次的题目啊,真的水到不行,宁看看这题,没有输出入要求,就一个点,那我直接暴力输出不就行了,来看看
我一开始的代码啊
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#define itn int
using namespace std;
int main()
{
cout<<"1.849016"<<endl;
return 0;
}
(前面的那一堆头文件是新建就有,不是我特意打上的,逃)
宁看看,满打满算7行就够了,为什么要这么麻烦,还用二分,但是言归正传,我们在水题的时候,当然可以解出方程来,输出。可是如果这个式子再长一点,再难算一点呢?
所以还是要正儿八经的用二分。(话说我们课上刚刚学了二分法解方程)
找零点的时候,只用考虑[f(a)*f(b)<0]&&这个函数是连续不断的就可以了
所以就看一下AC代码吧
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#define itn int
#define E 1e-7
using namespace std;
double f(double x)
{
double y=x*x*x*x*x-15*x*x*x*x+85*x*x*x-225*x*x+274*x-121;
return y;
}
int main()
{
double left=1.5,right=2.4;
while(left+E<right)
{
double mid=(left+right)/2.0;
if(f(mid)>0)
left=mid;
else right=mid;
}
if(f(left)==0)
printf("%.6lf\n",left);
else
printf("%.6lf\n",left);
return 0;
}
按要求的六位输出别忘了,
还有就是千万别忘了开double,不然你出不来这个数
浙公网安备 33010602011771号