PAT乙级题 1044 python解答

该博客介绍了如何实现地球13进制和火星文之间的转换。内容包括火星文的计数规则,如地球数字0-12在火星文中的表示,以及高位数字的映射。博主提供了一个程序,用于解决在给定输入区间内地球数字和火星文的相互翻译问题。
摘要由CSDN通过智能技术生成

1044. 火星数字(20)

火星人是以13进制计数的:

  • 地球人的0被火星人称为tret。
  • 地球人数字1到12的火星文分别为:jan, feb, mar, apr, may, jun, jly, aug, sep, oct, nov, dec。
  • 火星人将进位以后的12个高位数字分别称为:tam, hel, maa, huh, tou, kes, hei, elo, syy, lok, mer, jou。

例如地球人的数字“29”翻译成火星文就是“hel mar”;而火星文“elo nov”对应地球数字“115”。为了方便交流,请你编写程序实现地球和火星数字之间的互译。

输入格式:

输入第一行给出一个正整数N(<100),随后N行,每行给出一个[0, 169)区间内的数字 —— 或者是地球文,或者是火星文。

输出格式:

对应输入的每一行,在一行中输出翻译后的另一种语言的数字。

输入样例:
4
29
5
elo nov
tam
输出样例:
hel mar
may
115
13

n=int(input())
num=['0','1','2','3','4','5','6','7','8','9']
ge=['jan','feb','mar','apr','may','jun','jly','aug','sep','oct','nov','dec']
shi=['tam','hel','maa','huh','tou','kes','hei','elo','syy','lok','mer','jou']
for i in range(n):
    l=input()
    if l[0] in num:
        m=int(l)
        a=m//13
        b=m%13
        if a!=0 and b!=0:
            print(shi[a-1],ge[b-1])
        elif a!=0 and b==0:
            print(shi[a-1])
        elif a==0 and b!=0:
            print(ge[b-1])
        elif m==0:
            print('tret')
    else:
        l=l.split()
        if len(l)==2:
            print(13*(shi.index(l[0])+1)+ge.index(l[1])+1)
        elif len(l)==1:
            if l[0]=='tret':
                print(0)
            elif l[0] in ge:
                print(ge.index(l[0])+1)
            elif l[0] in shi:
                print(13*(shi.index(l[0])+1))

### PAT乙级 月饼问 Python思路 对于PAT乙级中的月饼问,主要目标是在给定条件下计算最优解。具体来说,该类目通常涉及库存量、市场需求和销售价格等因素。 #### 目描述解析 当面对此类问时,首先要理解输入数据结构。每个测试案例提供两个正整数N(表示月饼种类数目)和D(市场最大需求量),接着两行分别代表各个月饼类型的库存量与对应的总售价[^3]。 #### 数据处理方法 为了高效解决问,可以采用贪心算法来挑选最有利可图的产品组合。这里的关键在于根据单位价值(即每吨的价格)对不同类型的月饼进行排序,从而优先考虑那些性价比更高的商品。 #### 实现逻辑分析 通过创建一个列表存储所有可能的选择,并按其效益降序排列,之后遍历此列表直到满足需求或资源耗尽为止。需要注意的是,在实际编码过程中要特别留意边界条件的处理,比如当剩余需求小于当前项的数量时应如何操作等问。 以下是具体的Python代码实现: ```python def max_profit(N, D, stocks, prices): # 计算并保存每种月饼的单价 unit_prices = [(prices[i]/stocks[i], i) for i in range(len(stocks))] # 对月饼按照单价从高到低排序 sorted_items = sorted(unit_prices, reverse=True) total_value = 0 for price_per_ton, index in sorted_items: if D == 0: break take_amount = min(D, stocks[index]) total_value += take_amount * (price_per_ton) D -= take_amount return round(total_value, 2) if __name__ == "__main__": n, d = map(int, input().split()) stock_quantities = list(map(float, input().strip().split())) sale_values = list(map(float, input().strip().split())) result = max_profit(n, d, stock_quantities, sale_values) print("%.2f" %result) ``` 这段程序首先读取必要的参数作为函数`max_profit()`的一部分,其中包含了核心业务逻辑——基于提供的信息找到能够获得的最大收益。最后输出的结果保留两位小数以符合目要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值