总结:仔细读题,细心...
1.个税缴纳
易错点:各个边界的数值,以及最后的四舍五入
def calTax(money):
more = money - 5000
if more <= 0:
return 0
if more < 3000:
return more * 0.03
if 3000 <= more < 12000:
return 3000 * 0.03 + (more - 3000) * 0.1
if 12000 <= more < 25000:
return 3000 * 0.03 + 9000 * 0.1 + (more - 12000) * 0.2
if 25000 <= more < 35000:
return 3000 * 0.03 + 9000 * 0.1 + 13000 * 0.2 + (more - 25000) * 0.25
if 35000 <= more < 55000:
return 3000 * 0.03 + 9000 * 0.1 + 13000 * 0.2 + 10000 * 0.25 + (more - 35000) * 0.3
if 55000 <= more < 80000:
return 3000 * 0.03 + 9000 * 0.1 + 13000 * 0.2 + 10000 * 0.25 + 20000 * 0.3 + (more - 55000) * 0.35
if more >= 80000:
return 3000 * 0.03 + 9000 * 0.1 + 13000 * 0.2 + 10000 * 0.25 + 20000 * 0.3 + 25000 * 0.35 + (more - 80000) * 0.45
if __name__ == "__main__":
T = int(input())
# 四舍五入到整数
for _ in range(T):
money = int(input())
print(int(calTax(money) + 0.5))
2.成员列表
dic1 = {}
N = int(input()) #群组人数-身份
for _ in range(N):
line = input().split()
identity, name = int(line[0]), line[1]
dic1[name] = identity
dic2 = {}
M = int(input()) #成员状态变化记录-状态
for _ in range(M):
line = input().split()
name, status = line[0], int(line[1])
dic2[name] = status
for name in dic2:
dic1[name] += dic2[name] * 10
res = sorted(dic1.items(), key=lambda kv: (-kv[1], kv[0]))
for name, val in res:
print(name)
3. 时间区间
测试用例过了,但是0%-AC,不知道哪里错了,求指正
def helper(w, time):
h,m,s = list(map(int, time.split(":")))
return w * 24 * 3600 + h * 3600 + m * 60 + s # 转换成秒数
def judge(time, openday):
res = float("inf")
for begin, end in openday:
if begin <= time <= end:
return 0
if begin > time:
res = min(res, begin - time)
return res
T = int(input()) # 样例数
for _ in range(T):
openday = []
K = int(input()) # K天开放
for _ in range(K):
line = input().split()
W, M = int(line[0]), int(line[1])
for i in range(M):
begin, end = line[i+2].split("-")
openday.append((helper(W, begin), helper(W, end)))
c = int(input()) # c个查询
for _ in range(c):
line = input().split()
w, clock = int(line[0]), line[1]
time = helper(w, clock)
print(judge(time, openday))