[기본수학1] 분수찾기

2021. 2. 20. 12:00백준

 

1193번: 분수찾기

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

www.acmicpc.net

분수라는 말에 현혹되지 않고,  x / y 형태의 숫자로 인식하면 편하다.

 

대각선으로 배치된 수의 합은 항상 같으므로 규칙성을 찾으면 된다.

 

2차월 배열 데이터를 1차원으로 변형해서 다루는 문제는 앞으로도 많이 나올 듯?

 

 

제출코드

target = int(input())

sum_x_y = 1
line_max = 0

while True:
    sum_x_y += 1
    if ((target * 2) - (sum_x_y*(sum_x_y-1))) <= 0:
        line_max = (sum_x_y*(sum_x_y-1)//2)
        break

line_diff = line_max - target

if sum_x_y % 2 == 0:
    print(str(1 + line_diff)+"/"+str(sum_x_y-line_diff-1))
else:
    print(str(sum_x_y - line_diff - 1) + "/" + str(1 + line_diff))