幸存数之和(100)
- 给一个正整数数列nums,从索引为0的位置开始向后跳,中间跳过了J个数字,命中索引为J+1的数字,该数被敲出,并从该点起跳,依次类推,直到幸存left个数为止,然后返回幸存数之和;
- 0是第一个起跳点;
- 起跳点和命中点之间间隔J个数字,已被敲出的数字不计入在内;
- 跳到末尾时,从头开始;
- 若起始时,left > len(nums) 则无需跳数处理;
输入描述:
输入正整数列表
输入跳数J
输入left幸存数
输出描述:
幸存数之和
示例1
输入:
1,2,3,4,5,6,7,8,9
4
3
输出:
13
说明:
依次删除6,2,8,5,4,7
思路:
- 注意每个命中的数字被敲出后,需从前一个位置开始起跳,别被题意误解;
# 输入列表
nums = list(map(int, input().strip().split(",")))
# 输入jump
jump = int(input().strip())
# 输入幸存的个数
left = int(input().strip())
def solution(nums, jump, left):
n = len(nums)
if left >= n:
result = sum(nums)
print(result)
return result
else:
start = 0
while len(nums) > left:
start = (start + jump + 1) % len(nums)
nums.pop(start)
start -= 1 # 一个数被敲出后,从前一个位置开始起跳
result = sum(nums)
print(result)
return result
solution(nums, jump, left)