#include <iostream>
using namespace std;

int minRound(int hp, int n, int b) {
    int ans = 0, div;
    while (hp > 0) {
        // 2 * na < ba 且 hp > na 时,选 ba 更优
		if (2 * n < b && hp > n) {
            if (hp % b <= n) div = hp / b; // hp 整除 b 的余数 <= na 时,最后 na 一次即可
            else div = (hp + b - 1) / b; // 否则,还是选择聚力再 ba
            ans += 2 * div;
            hp -= b * div;
        }
		// 其他情况选 na 更优
        else {
            div = (hp + n - 1) / n;
            ans += div;
            hp -= n * div;
        }
    }
    return ans;
}

int main() {
    int hp, normalAttack, buffAttack;
    cin >> hp >> normalAttack >> buffAttack;
    cout << minRound(hp, normalAttack, buffAttack);
}
// 64 位输出请用 printf("%lld")

贪心,照着样例调了挺久的,一开始想的是一个一个减,然后有一个样例超时了,然后优化成一次减去整除的商的次数的伤害