#include <iostream>
/*
1 2 6 7 15 16 28 29
3 5 8 14 17 27 30
4 9 13 18 26 31
10 12 19 25 32
11 20 24 33
21 23 34
22 35
36
1/1 -> 1/2 -> 2/1 -> 3/1 -> 2/2 -> 1/3 -> 2/2 -> 3/1 -> 4/1 -> 3/2 -> 2/3 -> 1/4 -> 1/5 -> 2/4 -> 3/3 -> 4/2 -> 5/1
*/
void FindFractionalNumber(const int X, int& numerator, int& denominator)
{
bool IsReverse = true;
int cnt = 0;
if (X == 1) {
numerator = denominator = 1;
}
else if (X == 2) {
numerator = 1;
denominator = 2;
}
for (decltype(cnt) i = 1; i <= X; i++)
{
if (IsReverse) {
for (decltype(cnt) j = 1; j < i; j++)
{
//std::cout << j << "/" << i - j << " ";
cnt++;
if (cnt == X)
{
numerator = j;
denominator = i - j;
return;
}
}
IsReverse = !IsReverse;
}
else {
for (decltype(cnt) j = 1; j < i; j++)
{
//std::cout << i - j << "/" << j << " ";
cnt++;
if (cnt == X)
{
numerator = i - j;
denominator = j;
return;
}
}
IsReverse = !IsReverse;
}
//std::cout << "\n";
}
}
int main(void)
{
std::cin.tie(NULL);
std::cout.tie(NULL);
std::ios::sync_with_stdio(false);
int X = 0;
// 분자 분모
int numerator = 0, denominator = 0;
std::cin >> X;
FindFractionalNumber(X, numerator, denominator);
std::cout << numerator << "/" << denominator << "\n";
return 0;
}
1193번: 분수찾기 (acmicpc.net)