※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 1193번 문제인 분수찾기이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/1193
1193번: 분수찾기
첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.
www.acmicpc.net
글쓴이는 분모와 분자의 합을 먼저 구하고, 거기에서 주어진 숫자가 몇 번째인지를 계산하는 방식으로 문제를 해결했다.
대각선의 방향이 번갈아가며 바뀐다는 점에 유의하자. 이는 분모와 분자의 합이 홀수인지 짝수인지를 확인하는 걸로 간단히 확인할 수 있다.
아래는 구현한 소스코드이다.
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int N; cin >> N;
int idx = 1;
while (idx * (idx + 1) / 2 < N) idx++;
int nth = N - idx * (idx - 1) / 2;
if (idx & 1) cout << idx - nth + 1 << '/' << nth;
else cout << nth << '/' << idx - nth + 1;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 12924 // C++] 멋진 숫자 쌍 (0) | 2021.08.31 |
---|---|
[BOJ 2904 // C++] 수학은 너무 쉬워 (0) | 2021.08.30 |
[BOJ 11729 // C++] 하노이 탑 이동 순서 (0) | 2021.08.28 |
[BOJ 17394 // C++] 핑거 스냅 (0) | 2021.08.27 |
[BOJ 11238 // C++] Fibo (0) | 2021.08.26 |