CCF-CSP 201612 总结

第一题

找中间的数字,左右两个指针即可

100分代码如下:

int main() {
    int n;
    scanf("%d", &n);
    int list[1010];
    for (int i = 0; i < n; i++) {
        scanf("%d", &list[i]);
    }
    sort(list, list + n);
    int res = -1;
    for (int i = 0; i < n; i++) {
        int curr = list[i];
        int l = 0, r = 0;
        for (int j = 0; j < n; j++) {
            if (list[j] > curr)
                l++;
            else if (list[j] < curr)
                r++;
        }
        if (l == r)
            res = curr;
    }
    cout << res;
    return 0;
}

第二题

用税后工资反求工资,没想出正向算的方法,感觉好麻烦,直接硬着头笔枚举了。。。

没拿到满分,90分代码如下:

/*
1500元3% ;
1500元4500元税率10 % ;
4500元9000元税率20 % ;
9000元35000元税率25 % ;
35000元55000元税率30 % ;
55000元80000元税率35 % ;
80000元+税率45 % ;
*/
const int N = 200000;
int main() {
    int n;
    scanf("%d", &n);
    int fd[8] = { 0,1500,4500,9000,35000,55000,80000, 200000 };
    float sl[8] = { 0,0.03,0.1,0.2,0.25,0.30,0.35, 0.45 };
    int ms[7];
    ms[0] = 0;
    for (int i = 1; i < 7; i++) {
        ms[i] = (fd[i] - fd[i - 1]) * sl[i];
    }
    for (float sal = 0; sal <= N; sal++) {
        float s = 0;
        for (int i = 1; i <= 7; i++) {
            if (sal > 3500 + fd[i - 1] && sal < 3500 + fd[i]) {
                for (int j = 0; j < i; j++) {
                    s += ms[j];
                }
                s += (sal - (3500 + fd[i - 1])) * sl[i];
            }
        }
        if ((sal - s) == n)
            cout << sal;
    }
}

    int sal, res;
    int fd[] = { 1500,4500,9000,35000,55000,80000 };
    int sl[] = { 0.03,0.1,0.2,0.25,0.30,0.35, 0.45 };
    scanf("%d", &sal);
    for (int i = 0; i <= 100000; i++) {
        int s = 0;
        if (i > 3500) {
            s = (i - 3500) * 0.03;
        }
        if(i > )
    }

    float sal, cp, s = 0, payed = 0;
    scanf("%f", &sal);
    cp = sal;
    if (sal > 3500) {
        sal -= 3500    ;
        //payed += 3500;
        s += sal / (1 - 0.03) - sal;
    }
    if (sal > 1500) {
        sal -= 1500;
        s += sal / (1 - 0.1 + 0.03) - sal;
    }
    if (sal > 3000) {
        sal -= 3000;
        s += sal / 0.9 - sal;
    }
    if (sal > 4500) {
        sal -= 4500;
        s += sal / 0.95 - sal;
    }
    if (sal > 26000) {
        sal -= 26000;
        s += sal / 0.95 - sal;
    }
    if (sal > 20000) {
        sal -= 20000;
        s += sal / 0.95 - sal;
    }
    if (sal > 25000) {
        sal -= 25000;
        s += sal / 0.90 - sal;
    }
    cout << cp + s;

第三题

求用户的权限,全套模拟,注意遇到稍复杂的部分都用全局变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值