当前位置: 首页 > news >正文

[NOIP 2001 提高组] 一元三次方程求解

看题目数据范围:
方程存在三个不同实根(根的范围在 −100 至 100 之间)
可以知道这道题其实可以暴力

#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=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);}}
}

当然还有公式打法:
一元三次方程:aX3+bX2+cX+d=0
重根判别公式:

A=bX2-3ac
B=bc-9ad
C=c2-3bd

当A=B=0时,X1=X2=X3= -b/3a= -c/b = -3d/c

#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
int main()
{double a,b,c,d;double as,bs,t,si;double x1,x2,x3;cin>>a>>b>>c>>d;as=b*b-3*a*c;bs=b*c-9*a*d;t=(2*as*b-3*a*bs)/(2*sqrt(as*as*as));si=acos(t);x1=(-b-2*sqrt(as)*cos(si/3))/(3*a);x2=(-b+sqrt(as)*(cos(si/3)+sqrt(3)*sin(si/3)))/(3*a);x3=(-b+sqrt(as)*(cos(si/3)-sqrt(3)*sin(si/3)))/(3*a);cout<<fixed<<setprecision(2)<<x1<<" ";cout<<fixed<<setprecision(2)<<x3<<" ";cout<<fixed<<setprecision(2)<<x2<<" ";return 0;
}

当然最推荐的还是二分答案区间:

#include<cstdio>
double a,b,c,d;
double fc(double x)
{return a*x*x*x+b*x*x+c*x+d;
}
int main()
{double l,r,m,x1,x2;int s=0,i;scanf("%lf%lf%lf%lf",&a,&b,&c,&d);  //输入for (i=-100;i<100;i++){l=i; r=i+1;x1=fc(l); x2=fc(r);if(!x1) {printf("%.2lf ",l); s++;}      //判断左端点,是零点直接输出。//不能判断右端点,会重复。if(x1*x2<0)                             //区间内有根。{while(r-l>=0.001)                     //二分控制精度。{m=(l+r)/2;  //middleif(fc(m)*fc(r)<=0) l=m; else r=m;   //计算中点处函数值缩小区间。}printf("%.2lf ",r);  //输出右端点。s++;}if (s==3) break;             //找到三个就退出大概会省一点时间}return 0;
}
http://www.jsqmd.com/news/34615/

相关文章:

  • EPnP算法学习随笔
  • 毒盘未转存仅支持在线观看30s
  • P14322 「ALFR Round 11」E 空崎ヒナ 小结
  • AI元人文:理论自省与客观评估
  • [Element Plus 组件库的官方 API 参考文档] 的部分内容的解释
  • ZK笔记
  • 完整教程:《以 Trae 为桥:高效集成豆包 1.6 API 的实践与思考》
  • 完整教程:Labview项目01:标准可配置序列测试框架
  • 20251107
  • 从零开始实现简易版Netty(十) MyNetty 通用编解码器解决TCP黏包/拆包问题
  • [Python刷题记录]-除自身以外数组的乘积-普通数组-中等
  • Transformer Decoder 中序列掩码(Sequence Mask / Look-ahead Mask) - 详解
  • codeforces
  • P9785 [ROIR 2020] 对常规的斗争 (Day1) 题解
  • 实用指南:超越CNN和Transformer!Mamba结合多模态统领图像任务!
  • Docker镜像建立【MSSQL2022】
  • 闪回咒 | NOIP 2025 游记
  • 灰度发布
  • 【刷题笔记】AT 经典 90 题
  • CF1758E Tick, Tock
  • 深入解析:SciPy傅里叶变换与信号处理教程:数学原理与Python实现
  • CentOS Stream 9编译安装Nginx 1.28 - Leone
  • SQL核心语言详解:DQL、DML、DDL、DCL从入门到实践! - 实践
  • Ubuntu安装JDK与Maven和IntelliJ IDEA - 详解
  • Ubuntu安装JDK与Maven和IntelliJ IDEA - 详解
  • JavaWeb03-Vue
  • 【完结】Weblogic中间件应用服务器
  • 调整包含特定文本的单元格所在的行高
  • javabean和pojo的区别
  • 一次十分折腾的系统迁移:BCD损坏(0xc000000f), 0xc0000255, 0xc000000e以及解决办法