高数
时间限制:
1000 ms | 内存限制:
65535 KB
难度:0
-
描述
-
那一天,XxX_stu一个人在宿舍快乐地写代码,突然发现QQ闪了一下,“咦,师妹找我。”
“师兄你会高数吗”
XxX_stu一看到这句话顿时就不乐意了。开玩笑?在逗我?我一个搞ACM的搞不定一道小小的高数?
“题目是什么,发过来”,噼里啪啦一行字打过去。
接下来就是师妹发过来的题目:
已知:
求。
大概花了0.01秒的沉思,XxX_stu想出了解决方法。又过了两分钟,XxX_stu得到了答案。没错,XxX_stu这是这么叼。
现在轮到你来解决这个问题了,但是你的问题要难那么一点点
你要求的是。
-
输入
-
输入文件的第一行有一个整数T,表示总共有T组测试数据。
接下来有T行,每行两个有理数a,b。0<=a<=b<=10。
输出
- 对于每组测试,输出一个答案。浮点数太恶心啦,所以你要输出四舍五入到整数位的结果。 样例输入
-
20 20 10
样例输出
-
2420
-
my answer:
-
用的近似求值。。。。#include<iostream> #include<ios> #include<iomanip> #include<cmath> using namespace std; const int P = 1000000; double fun1(double m) { if(0<=m&&m<=2) return sqrt(m)*(2-m); else if(2<m&&m<=5) return m*m*m-2*m*m-m+2; else if(5<m&&m<=10) return 72-sqrt((m-5)*sqrt((m-5)*sqrt(m-5))); } double fun2(double a, double b) { double n = fabs(b-a)/P; double sum = 0; for(double i = a;i <=b ;i +=n){ sum+=fun1(i)*n; } return sum; } int main() { double a,b; int t; cin >>t ; while(t--){ cin >> a >> b; cout <<setiosflags(ios::fixed)<<setprecision(0)<< fun2(a,b) << endl; } return 0; }
-
别人的代码:
-
那些奇奇怪怪的数字哪里来的呀#include <cstdio> #include <cmath> double origf(double x){ if(x<2) return 1.333*pow(x,1.5)-0.4*pow(x,2.5)+288.741504; else if(x<5) return 0.25*x*x*x*x-0.666*x*x*x-0.5*x*x+2*x+289.583332; else return 72*x-0.5333*pow(x-5,1.875); } int main(){ int t; double a,b; scanf("%d",&t); while(t--){ scanf("%lf%lf",&a,&b); printf("%d\n",(int)(origf(b)-origf(a)+0.5)); } return 0; }
-
输入文件的第一行有一个整数T,表示总共有T组测试数据。