대출 상환
시간 제한2초메모리 제한512 MB
남은 양을 X로 나눈 몫을 매일 갚되 M보다 작으면 M을 갚을 때, K일 안에 N갤런을 모두 갚는 가장 큰 X를 구한다.
문제
Farmer John은 Bessie에게 우유 갤런()을 빚졌다. 그는 일 안에 우유를 갚아야 한다. 하지만 우유를 너무 빨리 다 줘 버리고 싶지는 않다. 한편으로는 대출 상환을 진전시켜야 하므로, 매일 최소 갤런()의 우유를 Bessie에게 주어야 한다.
Farmer John이 Bessie에게 빚을 갚는 방식은 다음과 같다. 먼저 양의 정수 를 하나 고른다. 그런 다음 매일 다음 절차를 반복한다.
- Farmer John이 지금까지 Bessie에게 갤런을 주었다고 하자. 을 내림한 값을 계산한다. 이 값을 라고 부르자.
- 가 보다 작으면 를 으로 정한다.
- Bessie에게 갤런의 우유를 준다.
Farmer John이 위 절차를 따를 때 일 후에 Bessie에게 적어도 갤런의 우유를 주게 되는 가장 큰 를 구하라().
입력
입력은 단 하나의 줄로 이루어지며, 공백으로 구분된 세 개의 양의 정수 , , 이 주어진다. 이들은 을 만족한다.
출력
Farmer John이 위 절차로 Bessie에게 적어도 갤런의 우유를 주게 되는 가장 큰 양의 정수 를 출력한다.
힌트
첫 번째 테스트 케이스에서 이면 Farmer John은 첫째 날에 Bessie에게 갤런을 주고, 그다음 이틀 동안은 매일 갤런을 준다.
이 문제에 등장하는 정수의 크기가 크므로 64비트 정수 자료형(예: C/C++의 "long long")이 필요할 수 있다.