はまやんはまやんはまやん

hamayanhamayan's blog

軽減税率? [yukicoder 928]

https://yukicoder.me/problems/no/928

解説

https://yukicoder.me/submissions/399903

不等式にして条件を満たすラーメンを考えてみる。
floor( (1+P/100)x ) < floor( (1+Q/100)x ) + A
floorは切り捨ての関数である。
両辺のfloorについてなんとかするのは難しい。
中身と制約をよく見るとxは2倍にしかならない。
Aの最大値は104なので、xは十分に大きくなると、大小関係が一定になってくる。
なので、適当な所で探索を打ちやめて大小関係が固まってきたら、それ以降は同じであるとして良い。

int P, Q, A;
int MA = 1000000;
//---------------------------------------------------------------------------------------------------
bool check(ll x) {
    ll lft = (100 + P) * x / 100;
    ll rht = (100 + Q) * x / 100 + A;
    return lft < rht;
}
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> P >> Q >> A;

    int ans = 0;
    rep(x, 1, MA) if (check(x)) ans++;
    if (check(MA)) ans += 1000000000 - MA + 1;
    cout << ans << endl;
}