201612-2 工资计算

简介: 201612-2 工资计算

201612-2 工资计算

  • C++
  • 枚举
  • 二分
  • 总结


本题链接201612-2 工资计算

本博客给出本题截图

image.png

C++

两种方法,枚举或二分

枚举

#include <iostream>
#include <algorithm>
using namespace std;
int get(int x)
{
    if (x <= 3500) return x;
    int a[] = {0, 1500, 4500, 9000, 35000, 55000, 80000, 1000000};
    int b[] = {0, 3, 10, 20, 25, 30, 35, 45};
    x -= 3500;
    int tax = 0;
    for (int i = 1; i < 8; i ++ )
        if (x >= a[i - 1])
            tax += (min(x, a[i]) - a[i - 1]) / 100 * b[i];
    return x + 3500 - tax;
}
int main()
{
    int T;
    cin >> T;
    for (int i = 0; ; i += 100)
        if (get(i) == T)
        {
            cout << i << endl;
            break;
        }
    return 0;
}

二分

#include <iostream>
using namespace std;
int get(int n)
{
    if (n <= 3500) return n;
    else
    {
        int a[8] = {0, 1500, 4500, 9000, 35000, 55000, 80000, 1000000000};
        double b[8] = {0, 0.03, 0.1, 0.2, 0.25, 0.3, 0.35, 0.45};
        double res = 0;
        n -= 3500;
        for (int i = 1; i <= 7; i ++ )
            if (a[i] <= n)
                res += (a[i] - a[i - 1]) * b[i];
            else
            {
                res += (n - a[i - 1]) * b[i];
                break;
            }
        return n - res + 3500 + 1e-6;
    }
}
int main()
{
    int n;
    cin >> n;
    int l = 0, r = 1e9;
    while (l < r)
    {
        int mid = l + r >> 1;
        if (get(mid) >= n) r = mid;
        else l = mid + 1;
    }
    cout << r << endl;
    return 0;
}

总结

二分法

二分算法模板


目录
相关文章
|
7月前
7-66 计算工资 (15 分)
7-66 计算工资 (15 分)
64 0
|
7月前
|
算法 前端开发
1873. 计算特殊奖金
1873. 计算特殊奖金
41 0
|
2月前
成绩计算
【10月更文挑战第17天】成绩计算。
83 3
|
6月前
|
SQL 算法 大数据
深入解析力扣184题:部门工资最高的员工(子查询与窗口函数详解)
深入解析力扣184题:部门工资最高的员工(子查询与窗口函数详解)
wustojc4011计算奖金
wustojc4011计算奖金
51 0
【SQL开发实战技巧】系列(十四):计算消费后的余额&计算银行流水累计和&计算各部门工资排名前三位的员工
本篇文章讲解的主要内容是:***通过模拟计算消费流水账及计算银行流水累计和讲解sum()over()函数使用场景、通过计算各部门工资排名前三位的员工小案例来介绍ROW_NUMBER、RANK、DENSE_RANK使用方法及区别***
【SQL开发实战技巧】系列(十四):计算消费后的余额&计算银行流水累计和&计算各部门工资排名前三位的员工
计算平均成绩
计算平均成绩
96 0
|
测试技术
软件测试工资一般多少 最低7k,最高30k
在当前的信息技术领域中,软件测试已经成为了非常重要的一项工作。它是保证软件质量的一个重要环节,可以确保软件产品的正确性、完整性、可用性等方面的质量。
165 0
AcWing 610. 工资和奖金
AcWing 610. 工资和奖金
134 0
AcWing 610. 工资和奖金
【每日SQL打卡】DAY 1丨部门工资最高的员工【难度中等】
【每日SQL打卡】DAY 1丨部门工资最高的员工【难度中等】