2024年春季学期《算法分析与设计》练习1

n = int(input())
print(str(n // 3600) + ":" + str((n % 3600) // 60) + ":" + str((n % 60)))

思路:基本的时间运算

def digui(n):
    if len(n) == 0:
        return 0
    else:
        return int(n[0]) + digui(n[1:])
 
while True:
    n = input()
    if n == "":
        break
    print(digui(n))

n = int(input())
one = ['o', 'n', 'e']
two = ['t', 'w', 'o']
for i in range(n):
    flag1 = 0
    flag2 = 0
    st = input().strip()
    if len(st) == 5:
        print(3)
    else:
        for i in range(len(st)):
            if st[i] == one[i]:
                flag1 += 1
        for i in range(len(st)):
            if st[i] == two[i]:
                flag2 += 1
        if flag1 >= 2:
            print(1)
        if flag2 >= 2:
            print(2)

思路:遍历判断

t = int(input())
for i in range(t):
    x, y, m = map(int, input().split())
    z = int((x / (x + y)) * 3 * m - m + 0.5)
    print(z)

while True:
    n = int(input())
    if n != 0:
        print(n // 2)
    else:
        break

理解题意即可

while True:
    str = input()
    if str[0] == '0':
        break
    h = 0
    for i in range(len(str)):
        h = (h * 10 + (int(str[i]) - int('0'))) % 17
    if h:
        print("0")
    else:
        print("1")

exp = [6, 2, 5, 5, 4, 5, 6, 3, 7, 6]
flag = 0
while True:
    flag += 1
    pp1 = 0
    pp2 = 0
    h = 0
    g = 0
    s1 = 0
    s2 = 0
    sum1z = exp[0]
    sum2z = exp[0]
    sum1 = sum1z
    sum2 = sum2z
    ans = 0
    while True:
        st = input().split()
        if st[0][1] == 'T':
            x1 = st[1].split(':')
            s1 = 3600 * int(x1[0]) + 60 * int(x1[1]) + int(x1[2])
            pp1 = s1
        if st[0][1] == 'C':
            p2 = st[1].split(':')
            if st[2] == 'home':
                h += int(st[3])
                if 0 <= h < 10:
                    sum1 = exp[h]
                elif h >= 10 and h < 100:
                    sum1 = exp[h // 10] + exp[h % 10]
                else:
                    sum1 = exp[h // 100] + exp[h % 100 // 10] + exp[h % 10]
                pp2 = int(p2[0]) * 3600 + int(p2[1]) * 60 + int(p2[2])
            if st[2] == 'guest':
                g += int(st[3])
                if 0 <= g < 10:
                    sum2 = exp[g]
                elif g >= 10 and g < 100:
                    sum2 = exp[g // 10] + exp[g % 10]
                else:
                    sum2 = exp[g // 100] + exp[g % 100 // 10] + exp[g % 10]
                pp2 = int(p2[0]) * 3600 + int(p2[1]) * 60 + int(p2[2])
            ans += (pp2 - pp1) * (sum1z + sum2z)
            sum1z = sum1
            sum2z = sum2
            pp1 = pp2
        if st[0][0] == 'E':
            x2 = st[1].split(':')
            s2 = 3600 * int(x2[0]) + 60 * int(x2[1]) + int(x2[2])
            ans += (s2 - pp1) * (sum1z + sum2z)
            break
    print('Case ' + str(flag) + ': ' + str(ans))

仔细一点,显示的是分数不是时间

exp = []
soc = []
while True:
    try:
        aid = []
        st = input().upper().split()
        aid.append(st[0][0])
        aid.append(st[0][3])
        aid.sort()
        target = str(aid[0]) + str(aid[1])
        soc.append(target)
        soc = list(set(soc))
        flag = 0
        for i in range(1, 501):
            for j in range(1, len(st)):
                if 'HE' * i == st[j]:
                    exp.append(target)
                    flag = 1
                    break
            if flag == 1:
                break
        exp = list(set(exp))
    except:
        break
print(str("%.0f" % round((len(exp) / len(soc) * 100))) + '%')

思路:字符串拆分

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值