블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다.
문제 설명
- 높이가 V미터인 나무 막대를 올라가는 달팽이는 낮에 A미터 올라갈 수 있고, 밤에 잠을 자는 동안 B미터 미끄러진다. 단, 정상에 올라간 후에는 미끄러지지 않는다. (1 <=B <A <=V <=1,000,000,000)
- 달팽이가 나무막대를 모두 올라가려면 며칠이 걸리는지 구하는 프로그램을 작성하시오.
풀이 전략
- 달팽이는 하루에 A-B미터씩 총 x미터를 올라감
- x는 달팽이가 목표지점에 도달한 날에는 미끄러지지 않으므로 총 V-B미터와 같고 (V-B)/(A-B)가 딱 나눠 떨어지지 않으면 하루 더 가므로 몫에 +1을 해야 함
- 따로 구분할 필요 없이 (V-B)에 1을 미리 빼놓고 몫에 무조건 1을 더하는 것으로 처리
소스 코드
#include <iostream>
using namespace std;
int main()
{
int a, b, v;
cin >> a >> b >> v;
cout << (v - b - 1) / (a - b) + 1;
}
링크
https://www.acmicpc.net/problem/2869