水题 第七站 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 }