※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 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

+ Recent posts