竞赛
考级
rt,数据范围很小,暴力一遍过 应该都会做吧
TX_Bernie
#include <iostream> #include <cstdio> using namespace std; int main() { double a,b,c,d; scanf("%lf%lf%lf%lf",&a,&b,&c,&d); for(double i=-100;i<=100;i+=0.001) { double j=i+0.001; double y1=aiii+bii+ci+d; double y2=ajjj+bjj+cj+d; if(y1>=0&&y2<=0||y1<=0&&y2>=0) { double x=(i+j)/2; printf("%.2lf ",x); } } }
法兰西玫瑰
因为区间很大,所以可以二分。 三个答案都在[-100,100]范围内,两个根的差的绝对值>=1,保证了每一个大小为1的区间里至多有1个解,也就是说当区间的两个端点的函数值异号时区间内一定有一个解,同号时一定没有解。那么我们可以枚举互相不重叠的每一个长度为1的区间,在区间内进行二分查找。
AC君
思路: 题目要求一元三次方程的解,因为体量不大就直接暴力吧,注意精度问题。 代码:
CK七星松|再发团队邀请建议趋势
AC代码 欢迎加入团队
唱跳坤
请输入文本.
正在减肥的吃货
dchk-SY
#include<bits/stdc++.h> #define int long long using namespace std; double a,b,c,d,cnt; double f(double x) { return (apow(x,3))+(bpow(x,2))+(c*x)+d; } signed main() { cin>>a>>b>>c>>d; for(double i=-100;i<=100;i+=0.001) { if(cnt>=3) { break; } if(f(i)*f(i+0.001)<0) { printf("%.2f ",i); cnt++; } } return 0; }
复仇者_黑客_ZDZL
回来看看
提交答案之后,这里将显示提交结果~