提利昂的赏赐(百度2017秋招真题)

题目描述

提利昂收服山地部落之后决定犒赏士卒,本着陈力就列的原则,他决定给五种人以赏赐:
1.作战能力>80,并且至少有一项特殊能力的人,每人8000银鹿
2.作战能力>85,并且声望>80的人,每人4000银鹿
3.作战能力>90,每人2000银鹿
4.作战能力>85的灼人部成员每人1000银鹿
5.声望>80的军官每人850银鹿。
提利昂想要尽量多的犒赏部下,所以只要满足条件即可得到奖赏,即每人可以获得多项赏赐。请你帮他算算自己需要准备多少银鹿,并且他想要知道得到赏赐最多的人是谁,以及它得到的银鹿数量。

输入样例

4
wdd 98 83 Y N 0
hdd 99 67 N Y 1
ldd 93 99 N N 0
qdd 81 97 Y N 1

  • 第一行一个整数N,表示士卒总数。1<=N<=100
  • 接下来N行每行一个字符串s,两个整数a,b,两个字母c,d,一个整数x。
  • S表示士卒的姓名,为长度小于20的字符串(不含空格)。
  • a,b分别表示作战能力和声望,都是属于[0,100]的整数。
  • c,d分别表示是否是军官和是否是灼人部成员,大写字母Y表示是,大写字母N表示不是,保证c,d只为Y或N。
  • x表示此人拥有的特殊能力数量。0<=x<=10

样例输出

hdd
11000
32700 #总共的奖励

代码

def calculate(s,a,b,c,d,x):
    money=0
    if (a > 80) and (x > 0):
        money += 8000
    if (a > 85) and (b > 80):
        money += 4000
    if a > 90:
        money += 2000
    if (a > 85) and (d == 'Y'):
        money += 1000
    if (b > 80) and (c == 'Y'):
        money += 850
    return money



n=int(input())

name=''
most=0
prepare=0

for i in range(n):
    input_str=input()
    s,a,b,c,d,x=input_str.split(' ')
    a=int(a)
    b=int(b)
    x=int(x)
    money=calculate(s,a,b,c,d,x)
    if money>most:
        name=s
        most=money
    prepare+=money

print(name)
print(most)
print(prepare)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值