알고리즘/백준(BOJ)
백준 1193 분수찾기
오뚜깅
2021. 2. 2. 02:48
반응형
이 문제는 패턴을 찾고 순서에 알맞는 패턴의 값을 출력하면 된다.
분수는 일정한 패턴으로 분자와 분모가 변한다.
우선 분자와 분모의 최대값이 자연수로 정해진다.
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;
}
반응형