程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> hdu 5065 數學題

hdu 5065 數學題

編輯:C++入門知識

hdu 5065 數學題


#include
#include
#include
using namespace std;
int A,B,y;
double ans=0;
double inline f(double x)
{
   return A*x*x-(B*sin(x)+y);
}
double inline absf(double x)
{
    if(f(x)<0)return -f(x);
    return f(x);
}
bool findans(double l,double r)         //求絕對值後函數必然先減後增。三分
{
    if(f(l)*f(r)>0)return 0;
    while(r-l>0.00000001)       //注意精度
    {
        double mid1=l+(r-l)/3,mid2=r-(r-l)/3;
        if(absf(mid1)<=absf(mid2))
            r=mid2;
        else
           l=mid1;
    }
    ans=l;
    return 1;
}
int main()
{
   int T;
   scanf("%d",&T);
   while(T--)
   {
      scanf("%d%d%d",&A,&B,&y);
      bool marks=0;ans=0;
      for(double x=0;x<50;x=x+0.3)
      {
          if(findans(x,x+0.3))
          {
              marks=1;break;
          }
      }
      if(marks)
          printf("%.5lf\n",ans);
      else
          printf("error\n");
   }
   return 0;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved