笔试题写的真不好
第一题
仔细读题!!!
给你一个数组,可以从中任挑几个数字减去
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)
"""