hdoj 2199二分搜索

来源:互联网 发布:linux自定义命令 编辑:程序博客网 时间:2024/06/06 23:59
#include<iostream>#include<stdio.h>#include<math.h>using namespace std;double f(double x){return 8*pow(x,4)+7*pow(x,3)+2*pow(x,2)+3*x+6;}int main(){double i,j,mid,y;int k;scanf("%d",&k);while(k--){//scanf("%f",&y);cin>>y;i=1;j=100;if(y<f(i)||y>f(j)){printf("No solution!\n");continue;}while(j-i>1e-8){mid=(i+j)/2;if(f(mid)<y)i=mid;elsej=mid;}printf("%.4f\n",i);}return 0;}/*我在下面求导算啦一下8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6这个方程式是单调的。 *//*1 scanf("%f",&y);输入浮点数会有问题cin解决2 double f(double n)因为是计算浮点数的,所以应该也用浮点数的。3 输出的时候printf("%d")写习惯啦,但是这样写是不对的。  printf("%f")4 用pow的时候要包含math.h文件5  if(y<f(i)||y>f(j)){printf("No solution!\n");continue;}也是很经典的一句话  */