HDU1724 Ellipse

题目链接

题解

可以直接用数值积分,也可以查积分表。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <cstdio>
#include <cmath>
using namespace std;
double a, b, L, R;
void init(){
scanf("%lf%lf%lf%lf", &a, &b, &L, &R);
}
double FF(double x){
return b * (x * sqrt(a * a - x * x) / 2 + a * a * asin(x / a) / 2) / a;
}
void solve(){
if(L < -a) L = -a;
if(R > a) R = a;
printf("%.3lf\n", (FF(R) - FF(L)) * 2);
}
int main(){
int T;
scanf("%d", &T);
while(T--){
init();
solve();
}
return 0;
}