Baekjoon Online Judge
문제
무한히 큰 배열에 다음과 같이 분수들이 적혀있다.
이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자.
X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.
출력
첫째 줄에 분수를 출력한다.
예제 입력 | 예제 출력 |
1 | 1/1 |
2 | 1/2 |
3 | 2/1 |
4 | 3/1 |
5 | 2/2 |
6 | 1/3 |
7 | 1/4 |
8 | 2/3 |
9 | 3/2 |
14 | 2/4 |
풀이
#include<iostream>
using namespace std;
// 1/1
// 1/2, 2/1
// 3/1, 2/2, 1/3
// 1/4, 2/3, 3/2, 4/1
// 홀수 번째의 분자는 1씩 증가하고, 분모는 1씩 감소한다.
// 짝수 번째의 분모는 1씩 증가하고, 분자는 1씩 감소한다.
int main() {
int X, num = 0;
cin >> X;
for (int i = 1; ; i++) {
num += i;
if (num >= X) {
// 짝수 번째
if (i % 2 == 0)
cout << i - (num - X) << "/" << 1 + (num - X);
// 홀수 번째
else
cout << 1 + (num - X) << "/" << i - (num - X);
break;
}
}
return 0;
}
'백준 > C++' 카테고리의 다른 글
[Baekjoon/C++] 부녀회장이 될테야 2775번 (0) | 2022.04.08 |
---|---|
[Baekjoon/C++] ACM 호텔 10250번 (0) | 2022.04.05 |
[Baekjoon/C++] 달팽이는 올라가고 싶다 2869번 (0) | 2022.04.05 |
[Baekjoon/C++] 벌집 2292번 (0) | 2022.04.05 |
[Baekjoon/C++] 손익분기점 1712번 (0) | 2022.04.05 |