跳到主要内容

题解:UVA11247 Income Tax

· 阅读需 1 分钟
lailai
Blogger

原题链接

题意简述

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

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

解题思路

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

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

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

整理得:

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

所以:

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

如果 vmax<mv_{max}<m 无解,输出 Not found;否则输出 vmaxv_{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;
}