CCF 2016 工资计算C++,Java,工资计算解题思路

来源:互联网 发布:开淘宝店需要上传照片 编辑:程序博客网 时间:2024/05/17 18:02
#include <iostream>using namespace std;int main(){int t;cin>> t; // 如果用Java写 ,则换成Java的输入输出就可以if(t<=3500){cout<< t ;return 0;}if((t-105)*100/97 -3500 <= 1500 ){cout<< (t-105)*100/97 ;}else if((t-455)*100 / 90 -3500 <= 4500 && (t-455)*100 / 90 -3500 > 1500){cout <<  (t-455)*100 / 90 ;}else if((t+45+300-80*20) * 100 /80 -3500 <= 9000 && (t+45+300-80*20) * 100 /80 -3500 > 4500 ){cout<<  (t+45+300-80*20) * 100 /80 ;}else if(( t + 45+300+900-125*25)*100 / 75 - 3500 <= 35000 && ( t + 45+300+900-125*25)*100 / 75 - 3500 > 9000 ){cout<<  ( t + 45+300+900-125*25)*100 / 75 ;}else if( (t+1245+260*25 -385*30) * 100 /70 - 3500 <= 55000 && (t+1245+260*25 -385*30) * 100 /70 - 3500 > 35000){cout<<  (t+1245+260*25 -385*30) * 100 /70 ;}else if(( t+1245 +260*25 +200*30 - 585*35) * 100 / 65 - 3500 <= 80000 && ( t+1245 +260*25 +200*30 - 585*35) * 100 / 65 - 3500 > 55000){ cout<< ( t+1245 +260*25 +200*30 - 585*35) * 100 / 65 ;}else if( (t+1245+260*25 + 200* 30+250*35 - 835*45) *100 / 55 -3500 > 80000){cout<< (t+1245+260*25 + 200* 30+250*35 - 835*45) *100 / 55 ;}return 0;} 

/*
工资计算表达式:
当S-3500<=1500时有,   X=(S-3500) * 3% ;  X为上税的工资  .....① 
                      X= S - T  ; T为已知税后工资 ,由我们输入。 ......②
    把②式代入一式得 S = (T-105) / 0.97

当 1500< S-3500 <= 4500时,  同理得 S = (T - 455) / 0.9  

  该题目难点在于如何求出原工资S,我们可以通过联立方程来求出,我们设一个变量X 为要上税的工资,则按照正常思维得一个方程

  X=(S - 3500)*3% ......①

  然后上税工资X 等于 原工资S 减去  税后工资 T

  X=S - T ........②

联立这两就可以得到 S= (T-105) / 0.97。也就是联立这两个方程可以得到S 关于T的表达式。

得到了S原工资我们就可以用正向思维解这个题目,如满足第一个条件

if((t-105)*100/97 -3500 <= 1500 )
剩下的我就不给出了,代码里的表达式有些是我化简得到了,希望你们自己推算出下面一些情况,磨炼自己

*/


原创粉丝点击