http://ac.nbutoj.com/Problem/view.xhtml?id=1346
- 问题描述
-
老虎想和兔子玩, 所以老虎一直追着兔子, 兔子觉着老虎很笨, 就一直躲着老虎.
有天, 兔子躲烦了. 停下来对老虎说 : "我最近对一个问题感到十分的困惑, 如果你能帮我解决我的问题, 我就不躲着你了."
有一个方程, 如下所示.
其中0 < q, s, t, u< 500 且 r , v < 0.
兔子想知道该方程在 [0, 1] 区间内的所有解.
老虎一下子就不知道该怎么办了. - 输入
-
本题有多组输入, 对于每组数据, 在一行内包含q, r, s, t, u, v
- 输出
-
对于每一组输出, 从小到大输出方程的所有解, 用空格分隔, 保留3位小数. 否则输出 -1
- 样例输入
-
1 -1 1 1 1 -1
- 样例输出
-
0.522
#include <stdio.h>
#include <iostream>
#include <cmath>
using namespace std;
int q,r,s,v,t,u,x;
double root(double x)
{
return q*sin(x)+r*cos(x)+s*tan(x)+t*x*x+v+u*x;
}
int main()
{
while(~scanf("%d%d%d%d%d%d",&q,&r,&s,&t,&u,&v))
{
x=-1;
double left=0;
double right=1;
double mid;
while(left<right)
{
mid=(left+right)/2;
double t=root(mid);
if(t<0.0001&&t>-0.0001)
{
x=mid;
break;
}
else if(t<0)
left=mid;
else
right=mid;
}
if(x!=-1)
printf("%.3f\n",mid);
else
printf("-1\n");
}
return 0;
}