HDUOJ--Strange fuction

时间:2022-05-05
本文章向大家介绍HDUOJ--Strange fuction,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Strange fuction

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

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

Recommend

lcy

http://acm.hdu.edu.cn/showproblem.php?pid=2899

代码:

 1 #include<iostream>
 2 #include<cmath>
 3 #include<cstdio>
 4 using namespace std;
 5 double y;
 6 double sum(double x)
 7 {
 8     return 6*pow(x,7)+8*pow(x,6)+7*pow(x,3)+5*pow(x,2)-y*x;
 9 }
10 double func(double x)
11 {
12     return 42*pow(x,6)+48*pow(x,5)+21*x*x+10*x-y;
13 }
14 int main()
15 {
16     int t;
17     double mid,left,right;
18     cin>>t;
19     while(t--)
20     {
21         scanf("%lf",&y);
22         if(func(100)>0)
23         {
24         left=0.0,right=100.0;
25         while(right-left>1e-8)
26         {
27           mid=(right+left)/2.0;
28           if(func(mid)>0.0)
29                 right=mid;
30         else
31             if(func(mid)<0.0)
32                 left=mid;
33             else
34                 break;
35         }
36         printf("%.4lfn",sum(mid));
37         }
38         else
39             printf("%.4lfn",sum(100.0));
40     }
41     return 0;
42 }