欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

洛谷 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;
}