https://www.acmicpc.net/problem/2869
문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
예제 입력 1
2 1 5
예제 출력 1
4
풀이
시간제한이 0.15초이기 때문에 시간에 신경을 많이 써야할 필요가 있는 문제이다.
처음에는 while문을 이용했기 때문에 시간초과가 났다.
그래서 반복문을 사용하지 않는 방법을 고민해야했다.
달팽이가 V 길이의 막대를 낮에 A미터 올라가고 밤에는 B미터 미끄러진다는 것을 식으로 만들면 (V-A)/(A-B)가 된다.
그리고 정상에 도달했을 때에는 미끄러지지 않으니 day는 그대로 (V-A)/(A-B)가 되고
아니라면 (V-A)/(A-B)+1이 되어 하루를 더 지난다.
그리고 최종적으로 1일부터 계산되어야하기 때문에 +1을 하고 출력한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include <stdio.h>
#include <stdlib.h>
int main() {
int A,B,V;
scanf("%d %d %d",&A,&B,&V);
int day;
if((V-A)%(A-B)==0)
day= (V-A)/(A-B);
else
day= (V-A)/(A-B)+1;
printf("%d\n",day+1);
}
|
'C++ > 백준' 카테고리의 다른 글
[C++][백준] [정렬] 2959 거북이 (0) | 2020.03.10 |
---|---|
[C++][백준] [정렬] 2870 수학숙제 (0) | 2020.03.10 |
[C++][백준] 2798 블랙잭 (0) | 2020.03.10 |
[C++][백준] 2753 윤년 (0) | 2020.03.10 |
[C++][백준] [정렬] 2751 수 정렬하기 2 (0) | 2020.03.10 |