题解:UVA11247 Income Tax

· · 题解

题意简述

给定最低应税收入 m 和税率 x\%,表示工资大于 m 时收税 x\%

求最大收入 v,使得税后收入小于未达到 v 的收入者的税前收入。无解输出 Not found

解题思路

如果收入小于 m 时不收税,所以最大收入为 m-1

收入 v\ge m,税后收入为 (1-x\%)v,因此:

(1-x\%)v<m-1

整理得:

v<\frac{m-1}{1-x\%}

所以:

v_{max}=\left\lfloor\frac{m-1}{1-x\%}-\epsilon\right\rfloor

如果 v_{max}<m 无解,输出 Not found;否则输出 v_{max}

参考代码

#include <bits/stdc++.h>
using namespace std;

using ll=long long;
const double eps=1e-5;
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    ll m,x;
    while(cin>>m>>x&&!(m==0&&x==0))
    {
        ll v=100.0*(m-1)/(100.0-x)-eps;
        if(v<m)cout<<"Not found"<<'\n';
        else cout<<v<<'\n';
    }
    return 0;
}