Codeforces 382 B Number Busters (수론)

제목 링크: Codeforces 382 B Number Busters
제목: a, b, w, x, c 를 드 립 니 다.1 초 마다 c = c - 1, 만약 b > = x 를 조작 하면 b = b - x;그렇지 않 으 면 a = a - 1, b = w - (x - b).몇 초 후 c < = a.
문제 풀이 방향: c 는 매 초 마다 줄 어 들 지만 b > = x 일 때 만 a 는 변 하지 않 습 니 다. 다시 말 하면 b < x 일 때 만 c 와 a 의 거리 가 들 어 갑 니 다.그리고 c - a 회, 즉 b - x * (c - a) 를 들 여 씁 니 다.그러나 b < x 라 고 말 하 는 경우 에는 w - x 를 더 해 야 한다.k 회 b < x 를 원한 다 고 가정 하면 공식 이 오래 있 습 니 다.
b - x * (c - a) + k * (w - x) + x > = x, 마지막 개요 > = x. 그리고 c - a 가 지나 간 초 수 를 더 합 니 다.
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <iostream>

using namespace std;
typedef long long ll;

ll a, b, w, x, c;

ll solve () {
	if (c <= a) return 0;
	ll ans = (ll) ceil(1.0 * (x * (c - a) - b) / (w - x)); 
	return ans + c - a;
}

int main () {
	cin >> a >> b >> w >> x >> c;
	cout << solve() << endl;
	return 0;
}

좋은 웹페이지 즐겨찾기