Дано натуральное число , затем дана последовательность
натуральных чисел. Необходимо определить количество непрерывных подпоследовательностей, сумма элементов которых кратна 1000.
Входные данные:
Даны два входных файла (файл А и файл В), каждый из которых содержит в первой строке одно целое число — количество чисел. Каждая из следующих
строк содержит натуральное число, меньшее 10000.
В ответе укажите два числа: сначала значение для файла , затем для файла
.
Неэффективное решение
f = open("6A.txt")
n = int(f.readline())
a = []
ans = 0
for i in range(n):
a.append(int(f.readline()))
for i in range(n):
s = 0
for j in range(i, n):
s += a[j]
if s % 1000 == 0:
ans += 1
print(ans)
Эффективное решение
f = open("6B.txt")
n = int(f.readline())
prefs = [0] * 1000 # кол-во преф. сумм по остаткам
ans, s = 0, 0
for i in range(n):
x = int(f.readline())
s += x
if s % 1000 == 0:
ans += 1
ans += prefs[s % 1000]
prefs[s % 1000] += 1
print(ans)