[HDU1724] Ellipse(심슨 포인트)
제목 설명
전송문
문제풀이
심슨 포인트 누드 문제 답은 2를 곱해야지 타원이 반쪽이니까
코드
#include
#include
#include
#include
#include
using namespace std;
const double eps=1e-10;
int dcmp(double x)
{
if (x<=eps&&x>=-eps) return 0;
return (x>0)?1:-1;
}
int T;
double a,b,l,r,ans;
double F(double x)
{
return b*sqrt(1-((x*x)/(a*a)));
}
double calc(double l,double r)
{
return (F(l)+F(r)+F((l+r)/2)*4)*(r-l)/6;
}
double simpson(double l,double r,double now)
{
double mid=(l+r)/2;
double p=calc(l,mid),q=calc(mid,r);
if (dcmp(now-p-q)==0) return now;
else return simpson(l,mid,p)+simpson(mid,r,q);
}
int main()
{
scanf("%d",&T);
while (T--)
{
scanf("%lf%lf%lf%lf",&a,&b,&l,&r);
ans=simpson(l,r,calc(l,r))*2;
printf("%.3lf
",ans);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
49일차 - 2022.04.20Baekjoon에서 문제풀이 1) 문제 : 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제/ 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다. 첫째 줄부터 N번째 줄까지 차례대로 별...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.