水题 第七站 NYOJ 高数

题目难度系数为0,本来不想做,因为题目思路很清晰,但是我真的是太菜了,求积分的式子求错了不说,思路也写的也很复杂,除此之外,对浮点数的精度也是不够了解

我的代码,结果并不正确

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 #include <math.h>
 5 using namespace std;
 6 double fun1(double a, double b)
 7 {
 8     return (4.0/3)*(pow(b,3.0/2))-(2.0/5)*(pow(b,5.0/2))-((4.0/3)*(pow(a,3.0/2)-(2.0/5)*(pow(a,5.0/2))));
 9 }
10 double fun2(double a, double b)
11 {
12     return (1.0/4)*pow(b,4.0)-(2.0/3)*pow(b,3.0)-(1.0/2)*pow(b,2.0)+2.0*b-((1.0/4)*pow(a,4.0)-(2.0/3)*pow(a,3.0)-(1.0/2)*pow(a,2.0)+2.0*a);
13 }
14 double fun3(double a, double b)
15 {
16     return 72.0*b-(8.0/15)*(pow(b,15.0/8.0))-(72.0*a-(8.0/15)*(pow(a,15.0/8)));
17 }
18 int main()
19 {
20     int n;
21     double a,b;
22     int sum;
23     scanf("%d",&n);
24     while(n--)
25     {
26         scanf("%lf %lf",&a, &b);
27         if(a<=0+1e-7)
28         {
29             if(b<=2+1e-7)
30                 sum=fun1(0,b);
31             else if(b>2-1e-7&&b<=5+1e-7)
32                 sum=fun1(0,2)+fun2(2,b);
33             else if(b>5-1e-7&&b<=10+1e-7)
34                 sum=fun1(0,2)+fun2(2,5)+fun3(5,b);
35             else
36                 sum=(int)(fun1(0,2)+fun2(2,5)+fun3(5,10));
37         }
38         else if(a>0&&a<=2)
39         {
40             if(b<=2+1e-7)
41                 sum=fun1(a,b);
42             else if(b>2-1e-7&&b<=5+1e-7)
43                 sum=fun1(a,2)+fun2(2,b);
44             else if(b>5-1e-7&&b<=10+1e-7)
45                 sum=fun1(a,2)+fun2(2,5)+fun3(5,b);
46             else
47                 sum=fun1(a,2)+fun2(2,5)+fun3(5,10);
48         }
49         else if(a>2-1e-7&&a<=5+1e-7)
50         {
51             if(b>2-1e-7&&b<=5+1e-7)
52                 sum=fun2(a,b);
53             else if(b>5-1e-7&&b<=10+1e-7)
54                 sum=fun2(a,5)+fun3(5,b);
55             else
56                 sum=fun2(a,5)+fun3(5,10);
57         }
58         else
59             sum=fun3(a,b);
60         printf("%d\n",sum);
61     }
62     return 0;
63 }

网上代码

 1  
 2 #include <stdio.h> 
 3 #include<math.h>
 4 double f(double n){
 5     double t1,t2,t3;
 6     if(-1e-7<=n&&n<=2+1e-7)return t1= 4.0/3*pow(n,1.5)-0.4*pow(n,2.5);
 7     if(-1e-7+2<n&&n<=5+1e-7)return t2= f(2)+0.25*pow(n,4)-2.0/3*pow(n,3)-0.5*pow(n,2)+2*n-6+16.0/3;
 8     return t3=f(5)+72*n-8.0/15*pow(n-5,15.0/8)-72*5;
 9 }
10 int main()
11 {
12     int T;
13     scanf("%d",&T);
14     while(T--){
15         double a,b;
16         scanf("%lf%lf",&a,&b);
17         printf("%d\n",(int)(f(b)-f(a)+0.5));
18         //printf("%.lf\n",f(b)-f(a));  
19     }
20     return 0;
21 }        

 

posted @ 2017-07-17 17:28  娇渣  阅读(184)  评论(0编辑  收藏  举报