1 条题解
-
0
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