用到了前缀和
枚举分成多少段,
然后去check每一段的和是否符合题意
import sys
n = int(input())
nums = list(map(int, list(input())))
s = [0] * (n + 1)
for i in range(1, n + 1):
s[i] = s[i - 1] + nums[i - 1]
su = sum(nums)
def check(st, need):
for i in range(st + 1, n + 1):
if s[i] - s[st] == need:
return i
return -1
for k in range(2, 100): # 枚举分成多少段
if su % k != 0: continue
need = su // k
res = check(0, need)
cnt = 0
while res != -1:
cnt += 1
res = check(res, need)
if cnt == k:
print('YES')
sys.exit(0)
print('NO')