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;
}