笔试题:
'''1.⼩⽩去附近店铺买橘⼦,⽬前商店做活动,提供捆绑打包销售,例如每袋3个和每 袋5个的形式出售。现⼩⽩只想购买n个橘⼦,同时想购买尽量少的袋数⽅便携带。如 果不能购买恰好n个橘⼦,就不会购买(可返回-1),求解输出最少的袋数。(例如: 18) ''' # def getnum(n): # ''' # 解题思路: # 5的k倍 返回K # 5的k倍+3 返回K+1 # 否则不购买 返回-1 # :param n: # :return: # ''' # n = int(n) # if n%5 == 0: # return n//5 # if n%5 == 3: # return n//5+1 # return -1 # if __name__ == '__main__': # for i in range(20): # print(f'买{i}个橘子,最少袋数为{getnum(i)}') ''' 第二题: ⼩红去超时买玩具,⼝袋怀揣了n张钱,买了⼀个价值m的玩具。钱的⾯额可以 是1元、5元、10元、50元,⽽⼩红拥有的钱中有的⾯额可能没有,问,付钱的时 候,会有多少种可能的付费组合⽅式? 输⼊:输⼊两个数n(多少张钱),m(玩具的价格) 输出:请输出可能的组合⽅式数; ''' # def outthings(n,m): # ''' # n为张数,m为价格 # 满足两个等式,即可 # :param n: # :param m: # :return: # ''' # for a in range(m//1+1): # for b in range(m // 5 + 1): # for c in range(m // 10 + 1): # for d in range(m // 50 + 1): # if (a+b+c+d) == n and (a*1+b*5+c*10+d*50) == m: # print(f'{a}张1,{b}张5,{c}张10,{d}扎根50') # # if __name__ == '__main__': # outthings(10,100) ''' 3.我们公司⽻⽑球队开始招新了,计划招收x⼈,每个⼈根据⽔平划分⾃⼰的级别 档位1~8级别 现计划按⼀下要求分成2个队伍(1队、2队) 1)1队的成员级别之和⼤于2对成员级别之和 2)1队的任意⼀名队员,如果分配他去到2队,1队的成员级别之和就会严格⼩于2对 成员级别之和 3)每个队员必须要加⼊⼀个队伍 现在有多少⽅案可以完成上⾯分配 例如招收4⼈,⽔平级别分别:5 4 7 6 有⼏种分队⽅案 ''' # def fun(arr,arr1,arr2): # ''' # 这个考虑到4个for循环太麻烦了,决定用递归 # 递归把列表分为两组, # 然后等分完以后进行判断,需要满足两个条件 # 1.1队的数据和 大于 2队的数据和 # 2.1队减去最小值 小于 2队加上1队的最小值 # # :param arr: # :param arr1: # :param arr2: # :return: # ''' # if arr: # for i in range(1,3): # if i == 1: # fun(arr[1:], arr1+[arr[0]], arr2) # else: # fun(arr[1:], arr1, arr2 + [arr[0]]) # else: # if sum(arr1) > sum(arr2) and (sum(arr1) - min(arr1)) < (sum(arr2) + min(arr1)): # print(arr,arr1,arr2) # # arr = [5,4,7,6] # arr1,arr2 =[],[] # fun(arr,arr1,arr2) ''' 4. 系统设计题 1)请分析题⽬需求,给出你认为合理的技术⽅案,技术⽅案格式可参考原公司; 2)请充分通过题⽬展现你的设计⽅法,设计理念。对于关键的技术选型,给出适当注 解; 需求描述:设计⼀个服务,任何⼈调⽤这个服务,都返回⼀个unique id,不能重复; ''' ''' 解:不会 ''' # class People(): # def __init__(self,ID): # self.ID = ID
-----------------------------------------------------------------------------------------------------------------------------------------