문제


땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터(1 ≤ B < A ≤ V ≤ 1,000,000,000)인 나무 막대를 올라갈 것이다.

달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.

달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.

IO example : 2 1 5 입력 → 출력 4

풀이


#include <stdio.h>
int main(){
    int a,b,v,d;

    scanf("%d %d %d",&a,&b,&v);
    d=(v-b-1)/(a-b)+1;
    printf("%d",d);

    return 0;
}

a는 달팽이가 낮에 올라가는 높이, b는 밤에 미끄러지는 높이, v는 달팽이가 올라가야 할 총 높이, d는 도착하는데 필요한 일 수를 저장하기 위한 변수입니다.

int로 각 변수에 값들을 저장하고, d=(v-b-1)/(a-b)+1; 로 달팽이가 정상에 도착하는데 필요한 일 수를 계산합니다.

그러나 이 식은 나눗셈이서 소수점 이하를 버림으로써 발생하는 오차를 고려하지 않기 때문에, v-b-1을 사용하여 하루 더 필요할 수 있는 경우를 보정해줍니다. 마지막으로 +1을 함으로써 마지막 날을 포함시킵니다.

마지막에 printf로 d에 저장된 값을 출력합니다.