I - Intersection 计算几何、积分、精度
My Solution
画个图,然后,分成小圆锥和球用平面切下来一个帽 两块,小圆锥的半径可以用勾股定理和相似三角形来求,然后另外一部分用一元积分来求,
刚开始以为是二元积分,想了好长时间……
然后主要就是注意精度问题,如果有根号的,在最终等式中有平方或立方就应当先去掉俩根号。
有些题,如果碰到精度问题可以考虑 加一个eps 然后输出带要求位数小数的答案。
#include<cstdio>
#include<bits/stdc++.h>
using namespace std;
//const int maxn=1e6+1000;
const double pi=acos(-1);
int main(void)
{
int t;
double r1,r2;
scanf("%d",&t);
while(t--)
{
scanf("%lf%lf",&r1,&r2);
double x1=r1*r1;
double x2=r2*r2;
double h=x1/sqrt(x1+x2);
double v=pi*x1*x2/(x1+x2)*h*(1.0/3.0) + (2.0/3.0)*pi*r1*r1*r1-pi*x1*h+pi/3.0*h*x1*x1/(x1+x2);
printf("%.4f\n",v);
}
}
非特殊说明,本博所有文章均为博主原创,未经许可不得转载。
https://www.prolightsfxjh.com/
Thank you!
------from ProLightsfx
非特殊说明,本博所有文章均为博主原创,未经许可不得转载。
如经许可后转载,请注明出处:https://prolightsfxjh.com/article/the-14th-uestc-programming-contest-final-i-intersection/
共有 0 条评论