728x90
시간 제한 : 2초
메모리 제한 : 128MB
입력
첫째 줄에 X(1≤X≤10,000,000)가 주어진다.
출력
첫째 줄에 분수를 출력한다.
소스코드
#include <iostream> using namespace std; int main(void) { int n, k = 1; cin >> n; while (1) { if (k*(k + 1) / 2 == n) { if (k % 2 == 0) cout << k << "/" << 1; else cout << 1 << "/" << k; break; } else if (k*(k + 1) / 2 > n) { if (k % 2 == 0) { int cnt = n - k*(k - 1) / 2; cout << cnt << "/" << k - cnt + 1; } else { int cnt = n - k*(k - 1) / 2; cout << k - cnt + 1 << "/" << cnt; } break; } k++; } return 0; }
Tip
사선 방향 규칙만 잘 풀어낼 수 있으면 쉽게 해결 가능하다.
728x90
'Computer Science > Algorithm Problem' 카테고리의 다른 글
백준] 2669 - 직사각형 네개의 합집합의 면적 구하기(KOI 1996) (0) | 2018.04.14 |
---|---|
백준] 1904 - 01타일 (0) | 2018.04.13 |
백준] 1712 - 손익분기점 (0) | 2018.04.09 |
백준] 1978 - 소수 찾기 (0) | 2018.04.05 |
백준] 3046 - R2(COCI 2006/2007) (0) | 2018.03.29 |