2021-08-07 牛客网华为机试

HJ42 学英语
def numbertowords(num):
    to19="one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen".split()
    tens="twenty thirty forty fifty sixty seventy eighty ninety".split()
    def words(n):
        if n<20: return to19[n-1:n]
        if n<100: return [tens[n//10-2]]+words(n%10)
        if n<1000: return [to19[n//100-1]]+['hundred']+['and']+words(n%100)
        for p, w in enumerate(('thousand', 'million', 'billion'), 1):
            print(p,w)
            if n<1000**(p+1): # 下一个三位
                return words(n//1000**p)+[w]+words(n%1000**p) # 先1000**p再算//
    return " ".join(words(num)) or 'zero'
 
while True:
    try:
        print(numbertowords(int(input())))
    except:
        break
HJ45 名字的漂亮度
while True:                                 #处理多组输入
    try:
        n = int(input().strip())            #接收待处理的数据个数
        if not n:break                       
        for i in range(n):                  #接收每个待处理的字符串
            s = input().lower()     
            if not s.isalpha():break        #输入不是字母为非法输入
            l = []                          
            res = 0
            for i in list(set(s)):          #记录字母出现次数
                l.append(s.count(i))
            l.sort(reverse=True)      #将字母出现次数从大到小排序
            for i in range(len(l)):         #计算最大漂亮度
                res += l[i]*(26-i)            
            print(res)
    except:
        break
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值