import sys
input = sys.stdin.readline
from math import sqrt,pi,sin,acos
def coslaw(a,b,c):
cosA = (b**2+c**2-a**2)/(2*b*c)
return acos(cosA)
x1,y1,r1,x2,y2,r2 = map(float,input().split())
c = sqrt((x1-x2)**2+(y1-y2)**2)
if not r1 or not r2 or c>=r1+r2:
result = 0
elif c <= max(r1,r2)-min(r1,r2):
result = pi*min(r1,r2)**2
else:
a1,a2 = 2*coslaw(r2,r1,c),2*coslaw(r1,r2,c)
result = (r1*r1*(a1-sin(a1))+r2*r2*(a2-sin(a2)))/2
print("{:.3f}".format(result))
매우 쉬운데 실수하기도 매우 쉬운 문제이다.
기본적인 방식은 알고리즘이라 할것도 없고 그냥 고등학교에서 배우는 코사인법칙을 이용하면 된다.
코사인법칙으로 사잇각을 구하고 호의 넓이에서 삼각형의 넓이를 빼주면 된다.
그런데 이제 주의할 점 몇 가지는
1. 0으로 나누지 않아야한다.
2. 출력은 소수점 세번째 자리까지 해야한다. (0이어도 0.000으로 출력해야한다.)
3. 원에 완전히 포함될 때와 완전히 포함되지 않을때, 그렇지 않을 때를 구분해주어야 한다.
등이 있다.
오늘의 교훈) 항상 0을 조심하자