728x90
[백준알고리즘] 1193번: 분수찾기 -C++
1193번: 분수찾기
첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.
www.acmicpc.net
각 대각선 방향마다 step이라 정해주었다. 각 step에서 분자와 분모의 합은 같다.
짝수 step과 홀수 step이 다른 점은 짝수 step에서는 1/step에서 step/1 로 점점 분자는 1씩 증가하고 분모는 1씩 감소하게 된다. 반대로 홀수 step에서는 step/1에서 1/step로 점점 분자는 1씩 감소하고 분모는 1씩 증가하게 된다.
하지만 각 단계에서 total이 각 step의 마지막 값을 기준으로 구했기 때문에 x가 있는 step의 맨 뒤의 값(짝수일 경우 step/1, 홀수일 경우 1/step에서 반대로 찾아주었다.
#include <iostream>
int main(void)
{
int x;
std::cin >> x;
int total, step;
total = step = 0;
while (total < x)
{
step++;
total += step;
}
int distance, dividend, divisor;
distance = total - x;
if (step % 2)
{
dividend = 1 + distance;
divisor = step - distance;
}
else
{
dividend = step - distance;
divisor = 1 + distance;
}
std::cout << dividend << "/" << divisor;
}
잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다
728x90
'algorithm > 백준알고리즘' 카테고리의 다른 글
[백준알고리즘] 2581번: 소수 -C++ (0) | 2021.01.17 |
---|---|
[백준알고리즘] 2775번: 부녀회장이 될테야 -C++ (0) | 2021.01.17 |
[백준알고리즘] 2292번: 벌집 -C++ (0) | 2021.01.17 |
[백준알고리즘] 2941번: 크로아티아 알파벳 -C++ (0) | 2021.01.16 |
[백준알고리즘] 2908번: 상수 -C++ (0) | 2021.01.16 |