https://www.acmicpc.net/problem/1193
백준 1193번: 분수찾기
#include <iostream>
using namespace std;
int main()
{
int X, Y = 0; //입력: X
int a = 0; // X번째 수는 Y번째 줄의 a번째 수
int b = 0; //Y를 찾기 위해 임시로 사용하는 값
cin >> X;
if (X == 1) { cout << "1/1"; }
else if (X == 2) { cout << "1/2"; }
else if (X == 3) { cout << "2/1"; }
else
{
for (int i = 3; i; i++)
{
b = i * (i + 1) / 2;
if (X <= b) { Y = i; break; }
}
a = X - Y * (Y - 1) / 2;
if (Y % 2 == 0)
{
cout << a << '/' << Y - a + 1;
}
else
{
cout << Y - a + 1 << '/' << a;
}
}
}
1부터 n까지의 합을 구하는 식을 이용해 Y번째 줄까지의 총 개수를 구했다.
임시값 b가 X보다 커지면 Y를 찾은 것이었는데, b와 X가 같은 경우를 고려하지 않아서 한참 헤맸다.
'백준' 카테고리의 다른 글
[백준] 2108번: 통계학 (0) | 2023.01.08 |
---|---|
[백준] 4948번: 베르트랑 공준 (0) | 2022.12.19 |
[백준] 1018번: 체스판 다시 칠하기 (C++) (0) | 2022.03.29 |
[백준] 7568번: 덩치 (C++) (0) | 2022.03.19 |
[백준] 10870번: 피보나치 수 5 (C++) (0) | 2022.02.22 |