#2869. 달팽이는 올라가고 싶다
Problem
높이 V미터인 나무막대
- 낮에 A미터 올라감
- 밤에 B미터 내려감
- 정상에서는 안내려감
나무 막대 모두 올라가는데 걸리는 일 수
하루에 +A -B
B < A ≤ V ≤ 10억
어차피 값은 10억을 넘을 수 없으니 int 사용해도 무방
Ex.
input
2 1 5
output
4
- 설명
1일: 0+2 = 2
2일: 2-1+2 =3
3일: 3-1+2 = 4
4일: 4-1+2 = 5
하지만 제한시간이 0.15초이기에 이런 단계로 풀면 안된다.
하루는 무조건 A가 되고 그 후는 -B+A가 반복이니 다음이 성립한다.
하지만 x는 정수이므로 위와 같은 부등호를 붙여주어야 한다.
3 1 6
1일: 3
2일: 3-1+3 = 5
3일: 5-1+3 = 7
공식: x ≥ 1.xx 따라서 x는 2, 총 일 수는 2+1 = 3일이된다.
- 근데 이 공식 적용하면 V가 되었다가 다시 줄어드는 경우가 있어서 답에 영향을 주나? → NO
ceil()
때문에 피연산자는double
형으로, 결과값은int
형으로 두었다.
(결과값을 double로 설정하면 출력값이 큰 경우 부동소수점 방식으로 출력되어 틀린 답이 된다.)1
2
3
4
5
6
7
8
9
10
11
12
13
using namespace std;
int main() {
double a, b, v;
int day = 1;
cin >> a >> b >> v;
double ans = (v-a) / (a-b);
ans = ceil(ans);
day += ans;
cout << day << endl;
return 0;
}