문제

무한히 큰 배열에 다음과 같이 분수들이 적혀있다.

# 1/1   1/2    1/3    1/4    1/5    …
# 2/1   2/2    2/3    2/4     …     …
# 3/1   3/2    3/3     …      …     
# 4/1   4/2    …     …     …     …
# 5/1   …     …     …     …     …
# …     …     …     …     …     …

이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자.

X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오


  1. 1번 스테이지에는 1/1
  2. 2번 스테이지에는 2/1 , 1/2
  3. 3번 스테이지에는 1/3, 2/2 , 3/1

대각선을 기준으로 왼쪽에 위치하면 분자가, 우측에 존재하면 분모가 상승한다,

그래서n부터 끝까지 반복문을 통해 구할 수 있다.

나는 line의 위치가 짝수일 때

분자= 지금 현재 라인- (끝단에서 찾을려는n의 뺸값)

분모= (끝단에서부터 찾으려는N읠 뺀값)+1 을 해줫다

홀수의 경우에는 반대로,

n = int(input())
line = 0
end = 0
while n > end:
    line += 1
    end += line

diff = end - n
if line % 2 == 0:  # 짝수일때
    top = line - diff
    bottom = diff + 1
else:
    top = diff + 1
    bottom = line - diff
print("%d/%d" % (top, bottom))