腾讯第二次笔试:花匠小Q
#花匠小Q的解题思路
如果k是0的话,不管花的数量有多少,都只有一种放花方案;
如果k不是0的话,假设a = k * count,count表示倍数,如果花的数量大于等于a时,那么放花方案就会有 elem - a + 1种,即把a个白花看成一朵花,那么白花红花在elem - a 个位置上有几种方法,即为组合数C( elem - a + 1,1),也就数 elem - a + 1。
nums = [int(n) for n in input().split()] t = nums[0] k = nums[1] result = [] for _ in range(t): number = [int(n) for n in input().split()] sum_ = 0 for index,elem in enumerate(range(number[0],number[1] + 1)): count = 1 basic = k flag = True while(flag): if elem >= basic * count: sum_ = sum_ + elem - basic * count + 1 count += 1 else: flag = False sum_ += 1 result.append(sum_) for index in range(t): print(result[index]
这是交了卷之后才调好的,不知道对不对,欢迎大家指正。

