ccf_201612-2_給与計算(c++)


試験問題番号:
201612-2
試験問題名:
給与計算
時間制限:
1.0s
メモリの制限:
256.0MB
問題の説明:
質問明ちゃんの会社は毎月明ちゃんに給料を出していますが、明ちゃんがもらった給料は個人所得税を払った後の給料です.もし彼の1ヶ月の税前給料(五険一金を差し引いた後、税を引かない前の給料)がS元であると仮定すると、彼が払うべき個人所得税は以下の公式によって計算される:1)個人所得税の徴収点は3500元で、Sが3500元を超えなければ、税金を払わないで、3500元以上の部分はやっと個人所得税を計算して、A=S-3500元;2)Aのうち1500元を超えない部分は、税率が3%である.3)Aのうち1500元を超えて4500元を超えていない部分は、税率が10%である.4)Aのうち4500元を超えて9000元を超えていない部分は、税率が20%である.5)Aのうち9000元を超えて35000元を超えていない部分は、税率25%である.6)Aの中で35000元を超えて55000元を超えていない部分は、税率が30%である.7)Aのうち55000元を超えて80000元を超えていない部分は、税率が35%である.8)Aの中で80000元を超える部分は、税率が45%である.例えば、明ちゃんの税引き前の給料が10000元であれば、A=100000-3500=6500元で、そのうち1500元を超えない部分は1500元を納めなければならない.×3%=45元、1500元を超え4500元を超えない部分は税金を納めなければならない(4500-1500)×10%=300元、4500元を超える部分は税金を納めるべき(6500-4500)×20%=400元です.全部で745元の税金を払って、税金を払った後の所得は9255元です.明ちゃんの今月の税引き後の所得はT元であることを知っていますが、彼の税引き前の給料Sはいくらですか.入力フォーマット入力の最初の行には、明ちゃんの税金後の所得を表す整数Tが含まれています.すべての評価データは、明ちゃんの税金前の給料が100パーセントであることを保証しています.出力フォーマットは整数Sを出力し、明ちゃんの税金前の給料を表します.サンプル入力9255サンプル出力10000評価サンプル規模と約束すべての評価サンプルに対して、1≦T≦100000.
 
c++:
#include 

using namespace std;

long long f(long long money){
    money=money>3500?money-3500:0;
    //
    int n=7;
    long long sf[n][2]={{0,3},{1500,10},{4500,20},{9000,25},{35000,30},{55000,35},{80000,45}};
    long long tax=0;
    for(int i=n-1; i>=0; i--){
        tax+= (money>sf[i][0]?money-sf[i][0]:0)*sf[i][1];
        money=min(money,sf[i][0]);
    }
    return tax/100;
}

int main(){
    int money;cin>>money;
    for(int i=money/100;true;i++){
        if(i*100-f(i*100)==money){
            cout<