#include <cmath>
#include <cstdio>
bool check(long double mid);
int main(void)
{
long double l = 1.5, r = 2.4;
while (l + 10e-8 < r)
{
long double mid = l + (r - l) / 2.0;
if (check(mid))
{
l = mid;
}
else
{
r = mid;
}
}
printf("%.6Lf", l);
return 0;
}
bool check(long double mid)
{
return abs(pow(mid, 5) - 15 * pow(mid, 4) + 85 * pow(mid, 3) - 225 * pow(mid, 2) + 274 * mid - 121) > 0;
}
点赞
投币
收藏
1 个赞
题目是什么/
1 个赞
或题面
1 个赞
不用了
1 个赞
1 个赞
你这个有很多错误啊
1 个赞
#include<bits/stdc++.h>
using namespace std;
int n,m,a[100005];
double f(double x){
return x*x*x*x*x-15*x*x*x*x+85*x*x*x-225*x*x+274*x-121;
}
signed main(){
double l=1.5,r=2.4;
while(l+0.000001<r){
double mid=(l+r)/2.0;
if(f(mid)<0){
r=mid;
}else{
l=mid;
}
}
printf("%.6lf",r);
}
1 个赞
check错了
1 个赞
abs(a)>0
1 个赞
check函数里不用套abs
开头改成#include<bits/stdc++.h>
using namespace std;
没必要用long double
你这个while判断里精度太小了
没事的,double万能
可是真的有问题啊
1 个赞
还是严谨小心点好
1 个赞
你傻啊,导入不需要的头文件会降低程序的运行速度,还会占用内存空间!
1 个赞
我从来不用 using namespace std,有可能导致撞标识符
1 个赞
大佬你用什么?
好吧,那对不起了
1 个赞
但check里绝对不能用abs
1 个赞
#include<bits/stdc++.h>
using namespace std;
int main() {
cout<<"1.849016";
return 0;
}
2 个赞