728x90
단계별로 풀어보기 - 수학 1 단계 - [4단계] 1193번
문제
문제 링크 : www.acmicpc.net/problem/1193
1193번: 분수찾기
첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.
www.acmicpc.net
입력 복사 :
14
풀이
위 그림은 각 분수의 분자가 대각선 상에서 증가하는 방향을 표시했습니다.
그림과 같은 방향으로 i번째 대각선에서는 i까지 분자가 증가합니다.
분자는 홀수번째 대각선에서 아래로 증가, 짝수번째 대각선에서 위로 증가하고 있습니다.
분모는 분자의 반대 방향으로 이루어져 있어서,
분자를 구한 후, i+1에서 분자를 뺀 값을 분모로 사용할 수 있습니다.
i번째 대각선에는 i개의 원소가 있으므로,
N이 몇번째 대각선에 있는지 파악하기 위해
i를 순차적으로 증가시키며 빼줍니다.
N이 i보다 작아진 경우 해당 i번째 대각선에 N번째 원소가 존재합니다.
이후 대각선의 홀/짝에 따라 방향을 고려하여 분자, 분모에 해당하는 최종 값을 결정합니다.
CODE
#include <iostream>
using namespace std;
int main() {
int N;
cin >> N;
int i = 1;
while (N > i) {
N -= i;
i++;
}
if (i % 2 == 1)
cout << i + 1 - N << '/' << N << endl;
else
cout << N << '/' << i + 1 - N << endl;
}
결과
728x90
'Baekjoon > 단계별로 풀어보기' 카테고리의 다른 글
[BOJ/백준] 10250번 ACM 호텔 C++ 문제 풀이 (0) | 2020.11.07 |
---|---|
[BOJ/백준] 2869번 달팽이는 올라가고 싶다 C++ 문제 풀이 (0) | 2020.11.07 |
[BOJ/백준] 2292번 벌집 C++ 문제 풀이 (0) | 2020.11.05 |
[BOJ/백준] 2839번 설탕 배달 C++ 문제 풀이 (0) | 2020.11.05 |
[BOJ/백준] 1712번 손익분기점 C++ 문제 풀이 (0) | 2020.11.04 |