社区讨论
50分求改 qwq
P1024[NOIP 2001 提高组] 一元三次方程求解参与者 3已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @m0ne3gsu
- 此快照首次捕获于
- 2024/09/04 13:00 2 年前
- 此快照最后确认于
- 2025/11/04 21:46 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
double a, b, c, d;
double f(double x) {
return a * x * x * x + b * x * x + c * x + d;
}
int ans = 0;
vector<double> root;
void bi_search(double x, double y) {
if (ans == 3) {
return;
}
if (f(x) == 0) {
root.push_back(x);
ans++;
return;
}
if (f(x) * f(y) < 0) {
double mid = (x + y) / 2;
if (f(x) * f(mid) < 0) {
bi_search(x, mid);
}
else {
bi_search(mid, y);
}
}
}
void search()
{
for (double i = -100; i < 100; i++) {
if (f(i) == 0) {
ans++;
root.push_back(i);
}
else {
bi_search(i, i + 1);
}
}
}
int main()
{
std::cin >> a >> b >> c >> d;
search();
for (const auto & r : root) {
std::cout << fixed << setprecision(2) << r << " ";
}
return 0;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...