Дана последовательность натуральных чисел. Необходимо определить количество её непрерывных подпоследовательностей, сумма элементов которых
Входные данные.
Первая строка входного файла содержит целое число N — общее количество чисел в наборе. Каждая из следующих
Вам даны два входных файла
Ответ:
Приведём решение на языке Python.
f = open("27-B.txt")
n = int(f.readline())
lefts = [0 for i in range(1111)]
count = 0
sumi = 0
for i in range(1, n + 1):
num = int(f.readline())
sumi += num
if sumi % 1111 == 0:
count = count + 1
count += lefts[sumi % 1111]
lefts[sumi % 1111] += 1
print(count)
Ответ: 344 1620157920.
Приведём решение Юрия Красильникова на языке Python.
nums = [int(s) for s in open('27-B.txt') ][1:]
rems = [1]+[0]*1110
s=0
for x in nums:
s+=x
rems[s%1111] += 1
print(sum([x*(x-1)//2 for x in rems]))
Приведём другое решение.
Если будет найдена подпоследовательность чисел с остатком от деления суммы элементов этой подпоследовательности
Приведём решение задачи на языке Pascal.
var
i, n, num, count: integer;
sum: int64;
lefts: array[0..1110] of int64;
f: text;
begin
assign(f,'C:\27-B.txt');
reset(f);
readln(f, n);
for i := 0 to 1110 do begin
lefts[i] := 0;
end;
count := 0;
sum := 0;
for i := 1 to n do begin
readln(f, num);
sum := sum + num;
if (sum mod 1111 = 0) then count := count + 1;
count := count + lefts[sum mod 1111];
lefts[sum mod 1111] := lefts[sum mod 1111] + 1;
end;
writeln(count);
end.
В результате работы данного алгоритма при вводе данных из
Примечание.
Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.

