[백준] 16891 - 탄성 충돌
[문제]
[풀이]
두 물체 A와 B가 충돌했을 때의 속도는 문제에 나와있는 공식을 그대로 써주면 된다.
충돌이 언제 끝나는지 고려해 주면 된다.
A가 왼쪽으로 운동하면 벽과 충돌하여 운동 방향만 바뀐다.
B가 왼쪽으로 운동할 때는 언젠간 A와 충돌한다.
B가 오른쪽으로 운동할 때에는 A가 B보다 속력이 크면 언젠가 충돌한다.
A와 B가 오른쪽으로 운동하고 B의 속력이 A의 속력보다 크면 더 이상 충돌하지 않는다.
이 문제의 상황은 꽤나 유명한 것으로 자세한 설명은 다음 링크의 영상에서 볼 수 있다.
https://www.youtube.com/watch?v=jsYwFizhncE
[코드]
[Python3]
[Ver1]
N=int(input())**2 ans=0 A=0;B=-100 while 1: if 0<=A<=B: break ans+=1 a = (1-N)/(1+N)*A + 2*N/(1+N)*B B = (N-1)/(N+1)*B + 2/(N+1)*A A = a if A < 0: ans+=1 A*=-1 print(ans)
B를 -100으로 초기화한 것에 특별한 의미는 없다.
음수로 설정하여 A에게 다가가도록 했다.[Ver2]
from math import * print(int(pi/atan(1/int(input())) - 0.001))
(충돌 횟수) <
을 빼서 위 식을 만족할 수 있게 한다. ex) N=1
Author And Source
이 문제에 관하여([백준] 16891 - 탄성 충돌), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@awj1052/백준-16891-탄성-충돌저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)