3.30阿里笔试
第一题
import sys ##n个养鸡场,每天增加k个,每天结束的时候数量最多的养鸡场减半,经过m天 共剩多少只小鸡 # 3 3 100 # 100 200 400 if __name__ == "__main__": def calculate(): for i in range(m): for num in range(len(a)): a[num]+=k indexmax=a.index(max(a)) a[indexmax]/=2 print(sum(a)) list=[] count=0 a=[] for line in sys.stdin: if count%2==0: innum = line.split() n=int(innum[0]) m=int(innum[1]) k=int(innum[2]) count+=1 else: innum=line.split() a = [] for x in innum: a.append(int(x)) calculate() count += 1
第二题
import sys #一个长为n的序列,求随机连续子序列的最大值的期望 #3 #1 2 3 if __name__ == "__main__": def continuesub(): subcol=[] num=len(list) for i in range(0,num): for j in range(i,num): sub=[] for k in range(i,j+1): sub.append(list[k]) subcol.append(max(sub)) print(round(sum(subcol)*1.0 / len(subcol),6)) list=[] count=0 for line in sys.stdin: if count%2==0: count+=1 else: a=line.split() list = [] for x in a: list.append(int(x)) continuesub() count += 1