基础课学习笔记(汇总){:target=”_blank”}
#include <iostream>
#include <cstdio>
using namespace std;
double x;
int main() {
cin >> x;
// 确定边界值
double l = -100000, r = 100000;
// 注意循环条件处理精度问题
while (r - l > 1e-8) {
// 步骤 A: 找中间值
double mid = (l + r) / 2;
// 步骤 B: 判断
if (mid * mid * mid < x) l = mid;
else r = mid;
}
printf("%.6f", r);
return 0;
}
想问一下,这里l=mid的时候,为什么不l+r+1 >>1了啊
浮点数不能进行位运算
帅!
#include [HTML_REMOVED]
#include [HTML_REMOVED]
#include [HTML_REMOVED]
using namespace std;
int main()
{
double x;
cin >> x;
double l=-10000,r=10000;
while(r-1>1e-8)
{
double mid=(l+r)/2;
if(midmidmid<=x) l=mid;
else r=mid;
}
printf(“%lf”,r);
return 0;
} 为啥时间超限了啊
全部都用scanf printf试试
r-l
大佬,我把double换成float为什么会TLE
这个精度问题怎么看,为啥是1e-8,我le-6错了
good
请问大佬,为啥最后如果直接用cout输出r的话为什么只有整数部分,r不是double类型的么
你搜一下cout输出浮点数格式就知道了,要加一些东西,不如用printf
爱了
答案区间应该是数据区间开三次方~
楼主已经讲的超级清楚了!
牛
nb
good