滴滴笔试 9.8
第一题 二分查找 AC
n, a, b = map(int, input().split()) c = list(map(int, input().split())) # 二分查找,初始化左右边界 left = a * b // sum(c) right = a * b // n while left < right: mid = (left + right) // 2 # 当前生产的糖果包数 cnt = sum(x * mid // b for x in c) if cnt < a: left = mid + 1 else: right = mid print(right)
第二题 暴力搜索 82%
判断字符串是否为任意两个合并字符串的子串(不能是前缀或后缀)
n = int(input()) words = [] for _ in range(n): words.append(input()) # 两两合并字符串 records = [] for i in range(n): for j in range(n): records.append(words[i] + words[j]) ret = [] for s in words: for t in records: x = t.find(s) if x != -1 and x != 0 and x != len(t) - len(s): ret.append(s) ret.sort() print(len(ret)) for s in ret: print(s)