酷代码 AI
菜单

你要开始一场数轴旅行,初始时,你所在的位置为  � = 0 x=0 ,你想要去  � = � x=d 位置。 给定  � n 个整数 � 1 , � 2 , . . . , � � a 1 ,a 2 ,...,a n ,表示每次你可以往左移动  � � a i  个单位或往右移动  � � a i  个单位。 请问,最终能否到达  � = � x=d 位置?能则输出 Yes,不能输出 No。 输入 输入共两行: 第一行,两个整数 n,d 第二行,n 个正整数 输出 输出能否达到最终目标位置。 样例输入 复制 2 -4 6 8 样例输出 复制 Yes 提示 对于  30 % 30% 的数据,满足  1 ≤ � ≤ 10 1≤n≤10, 1 ≤ � � ≤ 10 1≤a i ≤10, − 20 ≤ � ≤ 20 −20≤d≤20。 对于  60 % 60% 的数据,满足  1 ≤ � ≤ 1 0 3 1≤n≤10 3 , 1 ≤ � � ≤ 1 0 3 1≤a i ≤10 3 , − 1 0 4 ≤ � ≤ 1 0 4 −10 4 ≤d

```python # 获取输入 n, d = map(int, input().split()) # 获取每次移动的距离列表 a = list(map(int, input().split())) # 定义一个集合来存储所有可能到达的位置,初始时只有 0 这个位置 reachable = {0} # 遍历每次移动的距离 for step in a: # 定义一个临时集合,用于存储本次移动后所有可能到达的新位置 new_reachable = set() # 遍历当前已经可以到达的所有位置 for pos in reachable: # 尝试向右移动 new_reachable.add(pos + step) # 尝试向左移动 new_reachable.add(pos - step) # 更新 reachable 集合为本次移动后所有可能到达的位置 reachable = new_reachable # 判断目标位置 d 是否在最终可以到达的位置集合中 if d in reachable: print('Yes') else: print('No') ``` [2026-01-23 19:51:03 | AI问答 | 225点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多