Loading [MathJax]/jax/output/CommonHTML/jax.js
본문 바로가기

알고리즘/백준 문제 풀이

[Python] 31529번 2024년에는 혼자가 아니길

728x90

https://www.acmicpc.net/problem/31529


 

24/03/09

 

 

맷코 컵의 검수진으로 검수를 했던 문제 중 하나이다. 단순한 기하학 문제이다.


 

문제 접근 방식:

 

 

원점에서 A까지 떨어진 거리를 a, 원점에서 B까지 떨어진 거리를 b, 마찬가지로, c,d가 있다고 하자.

 

그러면 ¯AC2+¯BD2=X=a2+b2+c2+d2으로 나타낼 수 있다.

 

마찬가지로, Y=(a+b)2+(c+d)2=a2+b2+c2+d2+2ab+2cd으로 표현할 수 있다.

 

MN의 좌표는 ab2cd2이므로, ¯MN2을 계산하면 다음과 같다.

 

¯MN2=(ab2)2+(cd2)2=14[(ab)2+(cd)2]=14[a2+b2+c2+d22ab2cd]=14[Y2(YX)]=14[2XY]=W

 

이때, YX=2ab+2cd이므로, YX가 성립해야 하며, 길이의 제곱은 0보다 크거나 같아야 하므로 2XY가 성립해야 한다.

 

따라서, 이를 어긴다면 1을 출력하도록 하면 된다.

 

저 조건을 만족한다면 위의 식으로 구한 W값에 2024를 곱한 값을 구하여 출력하면 된다.

 

2024W로 가능한 값이 여러 개 존재하는 경우는 없다. 식을 잘 정리하면 저 문장은 낚시라는 사실을 알 수 있다.


아래는 내가 위의 접근 방식과 같이 작성한 파이썬 코드이다. 더보기를 누르면 확인할 수 있다.

더보기
# 2024년에는 혼자가 아니길
import sys
input = sys.stdin.readline
X, Y = map(int, input().split())
if Y < X or 2*X < Y:
    print(-1)
else:
    print(1012*X - 506*Y)