반응형
이 문제는 패턴을 찾고 순서에 알맞는 패턴의 값을 출력하면 된다.
분수는 일정한 패턴으로 분자와 분모가 변한다.
우선 분자와 분모의 최대값이 자연수로 정해진다.
1번째 분수는 1이 최대값
2~3번째 분수는 2가 최대값
4~6번째 분수는 3이 최대값
7~10번째 분수는 4가 최대값
11~15번째 분수는 5가 최대값
...
최대값이 짝수이고 i로 표현할 때 분수는 1/i, 2/(i - 1), ... , i/1 순서로 배정되고
최대값이 홀수일때는 분수는 i/1, (i - 1)/2, ... , 1/i 순서로 배정된다.
구하고자 하는 정수가 입력되면 반복문을 돌며 최대값이 몇 인 범위의 몇 번째 수인지를 구해서 분자와 분모를 구분하여 출력해주면 된다.
#include <iostream>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
cin >> n;
int value = 1, order = 1;
int i = 1;
while(true){
if(n - i <= 0)
break;
n -= i;
order = n;
i++;
value = i;
}
if(value % 2 == 0)
cout << order << "/" << value - order + 1;
else
{
cout << value - order + 1 << "/" << order;
}
return 0;
}
반응형
'알고리즘 > 백준(BOJ)' 카테고리의 다른 글
백준 18258 큐2 (0) | 2021.02.03 |
---|---|
백준 10757 큰 수 A + B (0) | 2021.02.03 |
백준 2869 달팽이는 올라가고 싶다 (0) | 2021.02.01 |
백준 2292 벌집 (0) | 2021.02.01 |
백준 9102 괄호 (0) | 2021.01.29 |