【9706】求方程的解

Time Limit: 1 second
Memory Limit: 128 MB

【问题描述】

求方程f(x)=2^x+3^x-4^x=0在[1,2]内的根
提示:2^x可以表示成exp(x*ln(2))的形式。
【输入格式】

[1,2]的区间值

【输出格式】

方程f(x)=0的根,x的值精确到小数点10位。

Sample Input

1 2

Sample Output

1.5071105957
【题目链接】:http://noi.qz5z.com/viewtask.asp?id=9706

【题解】

方程两边同除4^x
这里写图片描述
那个f(x)是个单调递减函数;
有单调性的话就一直二分搞答案就好.
如果不按下面的顺序好像搞不到那个样例输出;
掌握方法就好了;
用的零点定理;

【完整代码】

#include <cstdio>
#include <algorithm>
#include <cmath>

using namespace std;

double l,r;

double f(double x)
{
    return pow(0.5,x)+pow(0.75,x)-1;
}

int main()
{
    scanf("%lf%lf",&l,&r);
    double m=(l+r)/2;
    do
    {
        if (f(m)*f(r)<0)
            l = m;
        if (f(m)*f(l)<0)
            r = m;
        m = (l+r)/2;
    }
    while (abs(r-l)>1e-4 || abs(f(m))>1e-4);
    printf("%.10lf
",m);
    return 0;
}
原文地址:https://www.cnblogs.com/AWCXV/p/7632048.html