Цикл Python: разрыв и установка индекса цикла на максимальное значение дают разные результаты

#python #loops #break

#python #циклы #разрыв

Вопрос:

Я пытаюсь решить проблему на codeforces, но столкнулся с проблемой: следующие коды не дают одинаковых результатов (значение nb). Отличается только 4-я строка до конца: заменено break на j=i-1 .

 n = int(input())
a = list(map(int, input().split()))
nb = 0
s1 = 0
k = 0
for i in range(n):
    s1  = a[i]
    s3 = s1
    for j in range(k, i):
        if s3 == 0:
            k = i
            nb  = 1
            s1 = a[i]
            break
        s3 -= a[j]

print(nb)
  

второй код:

 n = int(input())
a = list(map(int, input().split()))
nb = 0
s1 = 0
k = 0
for i in range(n):
    s1  = a[i]
    s3 = s1
    for j in range(k, i):
        if s3 == 0:
            k = i
            nb  = 1
            s1 = a[i]
            j = i - 1
        s3 -= a[j]

print(nb)
  

Более того, оба дают одинаковые значения в 16 первых тестах. Второй сбой на 17-м.

Комментарии:

1. Каков ваш вопрос по поводу этого наблюдения? Почему вас удивляет, что использование разного кода дает разные результаты?

2. Я не понимаю разницы. Разве break и j=i-1 в этом случае не то же самое?