[백준] 1193 분수찾기

안재영·2022년 3월 2일
0

문제 링크

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

  • 티어 : Bronze 1
  • 시간 제한 : 0.5 초 (추가 시간 없음)
  • 메모리 제한 : 256 MB
  • 알고리즘 분류 : 수학, 구현

문제

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

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

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

입력

첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.

출력

첫째 줄에 분수를 출력한다.

예제 입출력



Algorithm

Code

x = int(input())

cum_sum = 1
i = 1
flag = 0
if x == 1:
    print('{}/{}'.format(1, 1))
else:
    while True:
        i += 1
        cum_sum += i # 1 + 2 + 3 + ... 누적합 하다가
        if cum_sum >= x: # 누적합이 x보다 커지면
            another = 1
            if i % 2 == 1: # 홀수
                flag = 1
            for j in range(cum_sum - x): # 누적합 - x 횟수만큼 되돌아가기
                    i -= 1
                    another += 1
            if flag:
                print('{}/{}'.format(another, i))
                break
            else:
                print('{}/{}'.format(i, another))
                break

메모리: 30864 KB
시간: 72 ms

profile
안녕하세요 : )

0개의 댓글