一元三次方程求解

洛谷题面

即对一个一元三次方程求解,要求输出全部的三个解并且精确到小数点后两位。

并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值 ≥1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位。

都说的这么清楚了,连范围都告诉我们了…
枚举呗

从-100开始枚举,到100时结束,如果满足等式就记录下来…
因为要精确到小数点后两位嘛,所以我们就枚举三位,每次加上0.001

反正数据也不大,也不会超时

简单代码:

#include <bits/stdc++.h>
using namespace std;
int main() {
	double a , b , c , d;
	cin >> a >> b >> c >> d;
	for (double i = -100;i <= 100;i += 0.001) {
		double j = i + 0.001;
		double y1 = a * i * i * i + b * i * i + c * i + d;
		double y2 = a * j * j * j + b * j * j + c * j + d;
		if (y1 >= 0 && y2 <= 0 || y1 <= 0 && y2 >= 0) {
			double x = (i + j) / 2;
			printf("%.2lf ",x);
		}
	}
   return 0;
}

ohhhhhhh水题一道,想起来写了题解罢了…

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值