https://www.acmicpc.net/problem/1193
분모는
(1) → (2→ 1)→ (1→ 2→ 3)→ (4→ 3→ 2→ 1) →(1→2→3→4→5) 순서
분자는
(1)→(1→2) → (3→2→1) → ( 1→2→3→4) → (5→4→3→2→1)
각 레이어는 1, 2, 3, 4 개의 원소로 이루어져있는 등차수열임.
X가 어느 레이어의 몇번째 자리 수인지 구해야함.
//#2992 벌집
#include <iostream>
using namespace std;
int main(void) {
//입출력 속도 향상
cin.tie(NULL);
cout.tie(NULL);
ios_base::sync_with_stdio(false);
int i;
int X;
int group = 1; // 레이어
int up, down; //분모와 분자
cin >> X;
while (1) {
if ((X - group) > 0) {
X -= group;
group++;
}
// 한 그룹의 원소 개수
else break;
}
if (group % 2 == 0) {
//분모는 내림차순
for (i = 1; i < X; i++) {
group--;
}
down = group;
//분자는 오름차순(그대로)
up = X;
}
//홀수번째 그롭
else {
//분자는 내림차순
for (i = 1; i<X; i++) {
group--;
}
up = group;
//분모는 오름차순(그대로)
down = X;
}
cout << up << "/" << down;
}