题解:P1024 [NOIP2001 提高组] 一元三次方程求解
题目传送门。
题目分析
思路
看数据范围并不大,考虑暴力,根据题目所给公式 不就完美解决了吗?
但是这样误差太大了,因此要换成更小的数,for(double i=-100;i<=100;i+=0.00001) 就足够了。
Code
#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.00001){//注意精度
if(abs((i*i*i*a)+(i*i*b)+(i*c)+d)<0.00001){//根据公式找到大概的值
cout<<fixed<<setprecision(2)<<i<<" ";//保留两位小数输出
}
}
return 0;
}