您的位置:首页 > 编程语言 > C语言/C++

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

2017-08-30 11:57 239 查看
#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 )剩下的我就不给出了,代码里的表达式有些是我化简得到了,希望你们自己推算出下面一些情况,磨炼自己
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ ccf ccf 解题思路