Descriptions: 求下面方程的根:f(x) = x3- 5x2+ 10x - 80 = 0
Input 无
Output 精确到小数点后9位。
Sample Input 无
Sample Output 无
题目链接: https://vjudge.net/problem/OpenJ_Bailian-4140
学校集训队选拔,题目比较水,大佬请自动跳过,非常简单的二分,先简单求导判断一下,发现答案只能大于0,一个while循环解一下,没啥说的上代码
AC代码
#include <iostream> #include <cstdio> #include <fstream> #include <algorithm> #include <cmath> #include <deque> #include <vector> #include <queue> #include <string> #include <cstring> #include <map> #include <stack> #include <set> #include <sstream> #define EPS 1e-10 #define f(x) (x*x*x-5*x*x+10*x-80)//函数 using namespace std; int main() { double minx=0;//简单判断,定义一下左右区间 double maxx=1000000000; double mid; while(maxx-minx>EPS)//注意要小数点后9位,因此用大于0是判断不出来的 { mid=minx+(maxx-minx)/2; if(f(mid)<0) minx=mid; else maxx=mid; } printf("%.9f\n",mid); return 0; }