CCF CSP 201612-1/2 中间数/工资计算 python

201612-1 中间数

在这里插入图片描述
在这里插入图片描述
自己做都是50分,从两边往中间走,这里参考别人满分实现代码从中间向两边走:

n = int(input())
data = list(map(int,input().split()))
data_sort = sorted(data)

middle = n//2

before = n//2
after = n//2

while before>0 and data_sort[middle] == data_sort[before-1]:
    before-=1
while after< n-1 and data_sort[middle] == data_sort[after+1]:
    after+=1
if before==n-1-after:
    print(data_sort[middle])
else:
    print(-1)

201612-2 工资计算

在这里插入图片描述
我自己只做了90分,没有注意到题目中的一句话:
“所有评测数据保证小明的税前工资为一个整百的数。”

写一下参考别人的满分实现:

n = int(input())
data_range = [0,1500,4500,9000,35000,55000,80000,1000000]
data_rate = [0,0.03,0.1,0.2,0.25,0.3,0.35,0.45]
T = 3500
data_max = []

for i in range(len(data_range)):
    if i == 0:
        data = data_range[0]-data_range[0]*data_rate[0]
        data_max.append(int(T+data))
    else:
        data = (data_range[i]-data_range[i-1]) - (data_range[i]-data_range[i-1])*data_rate[i]
        data_max.append(int(T+data))
    T += data


if(n<=3500):
    s = n
else:
    for i in range(len(data_max)):
        if n>data_max[i] and n<=data_max[i+1]:
            s = 3500+data_range[i]
            s += int((n-data_max[i])/(1-data_rate[i+1]))
            s= 100*(round(s/100))
            break
print(s)
            

CCF的小点也太多了吧!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值