我又来水博客啦

这次的题目啊,真的水到不行,宁看看这题,没有输出入要求,就一个点,那我直接暴力输出不就行了,来看看

我一开始的代码啊

#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,不然你出不来这个数

 

posted on 2020-05-25 16:48  月下诺  阅读(1158)  评论(0编辑  收藏  举报

Live2D