洛谷 P1024 【一元三次方程求解】

论为什么暴力能出奇迹:由题得根的范围在-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;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值