작심 24/7

[백준] 1193번 분수찾기 본문

백준

[백준] 1193번 분수찾기

모닝수박 2020. 5. 20. 02:28
 

1193번: 분수찾기

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

www.acmicpc.net

주어진 순서대로 번호를 매긴 후 점선을 기준으로 그 범위의 최댓값만 나열하니

계차 수열이 나왔다. 계차수열 an을 구한다.

 

i가 0부터 1씩 늘어난다면

n이 짝수인 경우 분수는 n-i/i+1

홀수인 경우 분수는 i+1/n-i 의 형태가 된다.

이런 공식을 찾기만 한다면 끝

#include <iostream>
using namespace std;
int main() {
	int X;
	cin >> X;
	int A = 0, n = 1;
	while (1) {
		A = 1 + ((n - 1)*(n + 2)) / 2;
		if (X <= A)break;
		else n++;
	}
	int i = A - X;
	if (n % 2 == 0)cout << n - i << "/" << i + 1;
	else cout << i + 1 << "/" << n - i;
	return 0;
}

'백준' 카테고리의 다른 글

[백준] 1002번 터렛  (3) 2020.05.20
[백준] 1929번 소수 구하기  (2) 2020.05.20
[백준] 11720번 숫자의 합  (0) 2020.05.20
[백준] 15552 빠른 A+B  (0) 2020.05.20
[백준] 4839번 설탕 배달  (0) 2020.05.20
Comments