반응형

문제 : https://www.acmicpc.net/problem/2869

 

서론

문제 이름이 꼭 해결해주고싶게 지어졌다.

 


아이디어

문제를 식으로 구현해보면

 

지나간 날 = n
(A-B)n +B >=V

 

하루에 이동할 수 있는 총 거리(A-B)에 지나간 날짜를 곱해주는데 

마지막날은 정상에 올라가면 내려가지 않으므로 마지막날 내려간 B를 상쇄시키기 위해 B를 더해준다.

위 식을 변형하면

 

n>=(V-B)/(A-B)

 

식을 코드로 작성하면 끝

 


구현

(V-B)/(A-B)가 n보다 작을 경우 +1

//c++

#include <iostream>

int main() {
	long long a, b, v;
	std::cin >> a >> b >> v;
	
	long long result = (v - b) / (a - b);
	if ((a - b)*result + b >= v) std::cout << result;
	else std::cout << result + 1;

}