首页 > 8.21 米哈游笔试
头像
爱玩矢量
编辑于 2020-08-23 00:06
+ 关注

8.21 米哈游笔试

第一题

  • 分数计算
  • 写的可能有些复杂了,不过逻辑不难
  • 注意分子是0和分母是1的情况就好
  • AC
def first():
    import math
    f, o, g = input().split(' ')
    # 1/8 + 3/8
    a, b = map(int, f.split('/'))
    c, d = map(int, g.split('/'))

    if o == '+':
        u = a * d + b * c
        l = b * d
        t = math.gcd(u, l)
    elif o == '-':
        u = a * d - b * c
        l = b * d
        t = math.gcd(u, l)
    elif o == '*':
        u = a * c
        l = b * d
        t = math.gcd(u, l)
    else:
        u = a * d
        l = b * c
        t = math.gcd(u, l)

    if u == 0:
        print(0)
    elif l // t == 1:
        print(u // t)
    else:
        print(str(u // t) + '/' + str(l // t))

第二题

  • 想法是把每一行当作一个二进制数
  • 看有没有若干个数的和正好是全一的二进制数,即和正好是 2^m-1,m是列长
  • AC


  • 其实逻辑上是有漏洞的,16楼老哥指出来了,sum求和用异或代替应该就对了


def second():
    n, m = map(int, input().split(' '))
    matrix = []
    for _ in range(n):
        matrix.append(eval('0b' + ''.join(input().split(' '))))

    from itertools import combinations
    target = 2 ** m - 1
    for i in range(1, n + 1):
        for c in combinations(matrix, i):
            if sum(c) == target:
                print('YES')
                break
        else:
            continue
        break
    else:
        print('NO')


全部评论

(20) 回帖
加载中...
话题 回帖

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐