1 条题解

  • 0
    @ 2026-10-18 17:44:02

    G1028 [GESP202606 一级] 交税 题解

    难度:2(GeekPi教学评定);知识点:循环累加、分类计费、定点数。

    解题思路

    按题目规则逐月计算:不超过800元不交税,超出部分按20%计算,全年为12个月税额之和。收入只有一位小数,先转成“角”的整数;超出8000角的部分乘2就是应交的分数。

    为什么正确

    每角超额收入对应0.2角税,即2分;逐月截去免税部分并累加整数分,精确得到总税额。

    易错点

    免税额应每个月分别扣除,不能全年只扣一次;最后用元、分输出两位小数,分不足两位要补0。

    复杂度

    时间:O(12),本题为常数;额外空间:O(1)。

    参考代码(C++17)

    #include<bits/stdc++.h>
    
    using namespace std;
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        long long total=0;
        for(int i=0;i<12;i++) {
            double v;
            cin>>v;
            long long tenths=llround(v*10);
            total+=max(0LL,tenths-8000)*2;
        }
        cout<<total/100<<"."<<setw(2)<<setfill('0')<<total%100;
    }
    

    来源与说明

    本题解为配套教学整理,非官方题解。题库使用自行生成的测试数据,8个测试点。

    • 1

    信息

    ID
    636
    时间
    1000ms
    内存
    512MiB
    难度
    入门
    标签
    递交数
    2
    已通过
    1
    上传者