本文主要是介绍Hust oj 1926 函数式计算(二分),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
函数式计算 |
Time Limit: 1000 MS | Memory Limit: 32768 K | Total Submit: 267(62 users) | Total Accepted: 71(58 users) | Rating: | Special Judge: No | |
Description |
小辉是一个游戏天才,但是数学不太好,一天他遇到一个难题,请你帮他解决。这道题是这样,给你一个函数式 4*x^4+3*x^3+2*x^2+x=y 然后给出y,求x的值。 |
Input |
有多组测试数据,输入的第一行是一个整数T(T<=1000)代表着测试数据的数量,接下来是T组测试数据。 接下来T行,每行一组输入整数y,0<=y<=100 |
Output |
输出结果x(保留4位小数),如果答案有一个,则输出答案并换行;如果有多个,按从大到小的顺序输出,每个答案中间用空格隔开,最后换行。 |
Sample Input |
1 1 |
Sample Output |
0.3971 -0.8764 纯二分,卡精度 #include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;int t;double re(double f)
{return 4*f*f*f*f + 3*f*f*f + 2*f*f + f;
}
int main()
{double left,right,mid;double x,y;scanf("%d",&t);while(t--){scanf("%lf",&y);if(y == 0){printf("0.0000 -0.6058\n");continue;}left = 0;right = y;while(right - left >= 0.00001){mid = (right + left) / 2;if(re(mid) > y)right = mid;elseleft = mid;}printf("%.4lf ",left);left = -y;right = 0;while(right - left >= 0.00001){mid = (right + left) / 2;if(re(mid) > y)left = mid;elseright = mid;}printf("%.4lf\n",left);}
}
|
这篇关于Hust oj 1926 函数式计算(二分)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!