牛客网 贪吃的小Q
小Q的父母要出差N天,走之前给小Q留下了M块巧克力。小Q决定每天吃的巧克力数量不少于前一天吃的一半,但是他又不想在父母回来之前的某一天没有巧克力吃,请问他第一天最多能吃多少块巧克力
输入描述:
每个输入包含一个测试用例。
每个测试用例的第一行包含两个正整数,表示父母出差的天数N(N<=50000)和巧克力的数量M(N<=M<=100000)。
输出描述:
输出一个数表示小Q第一天最多能吃多少块巧克力。
输入例子1:
3 7
输出例子1:
4
#计算第一天吃s个巧克力一共需要多少个多少个巧克力
def getSum(mid,n,m): sumv = 0 for i in range(n): sumv += mid mid = (mid+1)/2 #向上取整 return sumv def fun(n,m): if(n==1): return m low = 1 high = m #第一天的巧克力一定是大于等于1小于等于m的 while(low<=high): mid = (low+high+1)/2 if(getSum(mid,n,m)==m): #如果第一天吃mid个巧克力,刚刚好吃完所有巧克力,那么直接返回 return mid elif(getSum(mid,n,m)<m): low = mid +1 else: high = mid - 1 return high while True: try: N,M = map(int,raw_input().split()) print(fun(N,M)) except: break
浙公网安备 33010602011771号