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 代码:

HDUOJ--Strange fuction_HDUOJHDUOJ--Strange fuction_#include_02

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("%.4lf\n",sum(mid));
37 }
38 else
39 printf("%.4lf\n",sum(100.0));
40 }
41 return 0;
42 }

View Code



编程是一种快乐,享受代码带给我的乐趣!!!