洛谷 P1024 【一元三次方程求解】
程序员文章站
2022-03-02 23:06:49
...
论为什么暴力能出奇迹:由题得根的范围在-100~ 100间,又有根要精确到小数点后两位,所以,枚举-100.00~100.00即可
时间复杂度为O(2*1e4),而现代计算机甚至能够每秒运算上千万次(最保守估计,先进的如i7应该已经过亿),所以暴力是没有问题的
但也别每题都想直接暴力AC
不过仍需要注意:判断两个浮点数相等的条件与数据类型
#include<bits/stdc++.h>
using namespace std;
double a,b,c,d;//注意是实数,要用double
int main()
{
cin>>a>>b>>c>>d;
for(int i=-10000;i<=10000;i++){
//也可以用for(double i=-100.00;i<=100.00;i+=0.01)
double x=1.0*i/100;乘上1.0不然就是整型的运算了
if(abs(a*x*x*x+b*x*x+c*x+d)<=1e-8)cout<<fixed<<setprecision(2)<<x<<' ';
//判断两个浮点数相等的条件是差值小于等于1e-8
//在这道题里就是等式左边的值的绝对值小于等于1e-8
//不然会有数据找不到解
}
cout<<endl;//最好加上
return 0;
}