x와 y 사이를 우주선으로 가는데
1) s= 양끝단 거리 / v = 최고 속도 (이동거리 / 1워프)
2) 시작점에서 1부터 증가 --> 최고 속도에 이름 --> 1씩 속도 감소 (등차수열)
ex) 속도 = [1, 2, 3, ...., v, 알파, v-1, v-2, ..., 2, 1]
3) 따라서 속도의 합 = v(v+1)/2 * 2 - v + 알파 *여기서 v(v+1)/2는 1부터 v까지의 합을 의미
4) 풀어서 쓰면 속도의 합(s) = v^2 + 알파 // 즉, s = v^2 + 알파 // v = s^0.5 가 된다.
ex1) 거리가 120이라면, 최고 속도는 10이 되고 거리의 나머지는 20가 된다.
그런데 나머지가 19가 최고속도 10보다 크기 때문에 10, 10 이렇게 회수 2번 추가
ex2) 거리가 121이면 최고 속도는 11이되고 거리의 나머지는 0. 회수 추가 없음
ex3) 거리가 122이면 최고 속도는 11, 거리의 나머지는 1이기 때문에 회수 1번 추가
T = int(input())
for k in (range(T)):
# s =
T = int(input())
for k in (range(T)):
x, y = map(int, input().split())
s = y-x
v = int(s**0.5)
s1 = sum(range(v+1))*2-v
if v == 1: print (s)
elif s1 == s: print(2*v-1)
elif s -s1 <= v:print(2*v)
elif s -s1 >= v:print(2*v+1)
'백준's 단계별 풀이' 카테고리의 다른 글
Stage_9 (기본수학2) 11653번 소인수분해 (0) | 2021.04.06 |
---|---|
Stage_8 (기본수학2) 2581번 소수 (0) | 2021.03.30 |
Stage_8 (기본수학2) 1978번 소수 찾기 (0) | 2021.03.23 |
Stage_8 (기본수학1) 2839번 설탕 배달 (0) | 2021.03.18 |
Stage_8 (기본수학1) 2775번 부녀회장이 될테야 (0) | 2021.03.16 |