【23秋招】B站笔试题

笔试题写的真不好

第一题

仔细读题!!!
给你一个数组,可以从中任挑几个数字减去 2 k 2^k 2k。其中k从0开始,每次有效的减法必须是给至少一个数字减去值。问当让整个数组值的和变得最小的时候,做的有效的缩减次数是几次?

这题我没有仔细读题,过于慌张了。确实不应该。其实这题非常简单。因为任何一个整数都可以通过2的幂加和得到。 所以数组的和最后肯定取到0。关键是看需要做几次有效的减法。其实也比较easy,这就可以直接通过数的二进制位上是否有1来判断。所以得到这题的解法:
将每个位置做一次或操作,然后对最后结果数字做一个二进制位上1的统计,那么就是结果值了。

第二题

第三题

好像是leetcode原题。给出一个类似(x-1)(x+5)这样的多项式,求出最后x的一项的系数。

class Solution():
    def __init__(self):
        pass
    def solve(self):
        s = input()
        # print(s)
        # 将x全部用"" 代替
        s = s.replace("x",'').strip("()")
        # print(s)
        # 将数写到arr中
        arr = s.split(')(')
        arr = [int(arr[i]) for i in range(len(arr))]
        # print(arr)
        if len(arr) == 1:
            print(1)
            return 
        if len(arr) == 2:
            print(sum(arr))
            return 
        # 开始得到项数        
        a = 1 * arr[0] + arr[1] * 1 # 更新a的值
        b = arr[0] * arr[1]
        i= 2
        while(i<len(arr)):
            a = 1 * b + arr[i] * a # 更新a的值
            a = a % 10007
            b = arr[i] * b
            i += 1
        print(a)
s = Solution()
s.solve()
"""
(x-1)(x+2)(x+3)
(x+1)(x+2)(x+3)
(x+1)(x+2)
(x+5)
(x-1)(x+5)
"""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

说文科技

看书人不妨赏个酒钱?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值