源本科技 | 码上会

企业奖金阶梯提成计算

2026/01/26
9
0

题目

企业发放的奖金根据利润提成。利润 (I) 低于或等于 10 万元时,奖金可提 10%;利润高于 10 万元,低于 20 万元时,低于 10 万元的部分按 10% 提成,高于 10 万元的部分,可提成 7.5%;20 万到 40 万之间时,高于 20 万元的部分,可提成 5%;40 万到 60 万之间时高于 40 万元的部分,可提成 3%;60 万到 100 万之间时,高于 60 万元的部分,可提成 1.5%,高于 100 万元时,超过 100 万元的部分按 1% 提成。从键盘输入当月利润 lirun,求应发放奖金总数 sum

说明

本题是一个典型的分段累进提成(阶梯式提成)问题,类似于个人所得税的累进税率计算。关键在于:每一利润区间只对超出部分按对应比例提成,而非全部利润统一按最高档计算。提成规则如下(单位:万元):

利润区间(万元)

提成比例

0100 \sim 10

10%

102010 \sim 20

7.5%

204020 \sim 40

5%

406040 \sim 60

3%

6010060 \sim 100

1.5%

>100>100

1%

运行示例

输入当月利润:(万元)
50
应发的奖金是:3.45(万元)

👈点击左箭头查看答案(一定要在自己思考并实现后再看参考答案哦!)

规律分析

该问题属于分段线性函数,奖金S(I)S(I) 是利润II 的分段函数:

S(I)={0.1I,0I101+0.075(I10),10<I201.75+0.05(I20),20<I402.75+0.03(I40),40<I603.35+0.015(I60),60<I1003.95+0.01(I100),I>100 S(I) = \begin{cases} 0.1I, & 0 \leq I \leq 10 \\ 1 + 0.075(I - 10), & 10 < I \leq 20 \\ 1.75 + 0.05(I - 20), & 20 < I \leq 40 \\ 2.75 + 0.03(I - 40), & 40 < I \leq 60 \\ 3.35 + 0.015(I - 60), & 60 < I \leq 100 \\ 3.95 + 0.01(I - 100), & I > 100 \end{cases}

其中常数项为前几段的累计奖金:

  • 10 万时:10×0.1=110 \times 0.1 = 1

  • 20 万时:1+10×0.075=1.751 + 10 \times 0.075 = 1.75

  • 40 万时:1.75+20×0.05=2.751.75 + 20 \times 0.05 = 2.75

  • 60 万时:2.75+20×0.03=3.352.75 + 20 \times 0.03 = 3.35

  • 100 万时:3.35+40×0.015=3.953.35 + 40 \times 0.015 = 3.95

程序实现

import java.util.Scanner;

public class Demo12 {
    public static void main(String[] args) {
        System.out.println("输入当月利润:(万元)");
        Scanner in = new Scanner(System.in);
        double lirun = in.nextDouble();
        double sum;

        if (lirun <= 10) {
            sum = lirun * 0.1;
        } else if (lirun <= 20) {
            sum = 10 * 0.1 + (lirun - 10) * 0.075;
        } else if (lirun <= 40) {
            sum = 10 * 0.1 + 10 * 0.075 + (lirun - 20) * 0.05;
        } else if (lirun <= 60) {
            sum = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + (lirun - 40) * 0.03;
        } else if (lirun <= 100) {
            sum = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + (lirun - 60) * 0.015;
        } else {
            sum = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + 40 * 0.015 + (lirun - 100) * 0.01;
        }

        System.out.println("应发的奖金是:" + sum + "(万元)");
    }
}

测试用例验证

  • 输入 10 → 输出 1.0

  • 输入 20 → 输出 1.75

  • 输入 40 → 输出 2.75

  • 输入 60 → 输出 3.35

  • 输入 100 → 输出 3.95

  • 输入 150 → 输出 3.95 + 50×0.01 = 4.45


相关背景

此类阶梯提成模型广泛应用于:

  • 企业销售提成制度

  • 个人所得税累进税率(如中国个税)

  • 电费 / 水费分段计价

  • 电商平台佣金分层

它体现了“多劳多得、边际激励递减”的管理思想,既能激励员工提升业绩,又控制企业成本增速。在编程中,此类问题训练学生对分段函数边界条件处理的能力。