• 【精度问题】【HDU2899】Strange fuction


    Strange fuction

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 3809    Accepted Submission(s): 2760


    Problem Description
    Now, here is a fuction:
      F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x (0 <= x <=100)
    Can you find the minimum value when x is between 0 and 100.
     

    Input
    The first line of the input contains an integer T(1<=T<=100) which means the number of test cases. Then T lines follow, each line has only one real numbers Y.(0 < Y <1e10)
     

    Output
    Just the minimum value (accurate up to 4 decimal places),when x is between 0 and 100.
     

    Sample Input
    2 100 200
     

    Sample Output
    -74.4291 -178.8534
     

    Author
    Redow
     
    很水的题 但是WA了几次

    虽说最后要求1e-4的精度 

    但是因为求最小值 所以注意所求的x值精度 至少要1e-6 所以请注意





    #include <cstdio>  
    #include <cstdlib>  
    #include <cmath>  
    #include <cstring>  
    #include <ctime>  
    #include <algorithm>  
    #include <iostream>
    #include <sstream>
    #include <string>
    #define oo 0x13131313   
    using namespace std;
    double y;
    void init()
    {
    	freopen("a.in","r",stdin);
    	freopen("a.out","w",stdout);
    }
    double cal1(double x)
    {
    	return 6*pow(x,7)+8*pow(x,6)+7*pow(x,3)+5*pow(x,2)-y*x;
    }
    double  cal2(double x)
    {
    	return 42*pow(x,6)+48*pow(x,5)+21*pow(x,2)+10*x-y;
    }
    void solve()
    {
    	double L=0,R=100,ans=1e10; 
    	double temp1=cal1(L),temp2=cal1(R);
    	if(temp1<ans) ans=temp1;
    	if(temp2<ans) ans=temp2;
    	double ANS;
    	while(R-L>1e-6)
    	{
    		double m=(R+L)/2;
    		if(cal2(m)>0) R=m;
    		else if(cal2(m)<0) L=m;
    		else { ANS=m;break; }
    	}
    	ANS=R;
    	if(cal1(ANS)<ans) ans=cal1(ANS);
    	printf("%.4lf
    ",ans);
    
    }
    int main()
    {
    //	init();
    	int T;
    	cin>>T;
    	while(T--)
    	{
    		cin>>y;
    		solve();
    	}
    	return 0;
    }
      


  • 相关阅读:
    C++ 函数返回数组指针的问题
    cmake 静态调用 c++ dll 的类的一个例子(Clion IDE)[更新1:增加1.模版的应用,2.ma 的算法]
    一月5日
    一月5日
    一月5日
    一月5日
    一月5日
    一月5日
    一月5日
    一月5日
  • 原文地址:https://www.cnblogs.com/zy691357966/p/5480414.html
Copyright © 2020-2023  润新知