반응형


편의상 각각의 주황색 화살표를 '행'이라 칭하겠음.
int c와 total은 x번째 분수를 구하기 위해 총 몇 개의 행을 지나야 하는지 세기 위해,
order는 x번째 분수가 마지막 행의 몇 번째 순서의 값인지 파악하기 위한 변수이다.
total 값이 x 값보다 크거나 같아질 때까지 1, 2, 3, ... 차례대로 더해준다.
order는 x가 속한 행의 직전 행까지의 c의 합을 빼준 값을 x 에서 빼서 구해준다.
ex) x가 14면 c==5, total==15 에서 break. order는 14-(15-5) = 4가 된다.
즉 구하려는 분수가 마지막 행의 4번째 값이라는 뜻.
그 후 행이 홀수행인지 짝수행인지에 따라서 분수를 출력하는 규칙을 달리 정해준다.
#include <iostream> using namespace std; void Fraction(int x) { int c = 1, total = 1, order = 1; while (true) { if (total >= x) break; c += 1; total += c; } order = x - (total - c); if (c % 2 == 1) cout << (c - order + 1) << "/" << order; else cout << order << "/" << (c - order + 1); } int main() { int x = 1; cin >> x; Fraction(x); return 0; }
반응형
'Devlog > Coding Practice' 카테고리의 다른 글
[C++][Implementation] Apple and Orange (0) | 2021.07.28 |
---|---|
[C++][Implementation] Grading Students (0) | 2021.07.19 |
[C++][Warmup] Time Conversion (0) | 2020.09.06 |
[C++] 10996 별 찍기 - 21 (0) | 2020.08.10 |
[C++] 2446 별 찍기 - 9 (0) | 2020.08.10 |