Ошибка.
Попробуйте повторить позже
Дана последовательность из N натуральных чисел. Рассматриваются все её непрерывные подпоследовательности, такие что сумма элементов каждой из них кратна k = 101. Найдите среди них подпоследовательность с максимальной суммой, определите её длину. Если таких подпоследовательностей найдено несколько, в ответе укажите количество элементов самой короткой из них.
Входные данные: Даны два входных файла: файл A и файл B, каждый из которых содержит в первой строке количество чисел N (). Каждая из следующих N строк содержит натуральное число, не превышающее 10 000.
пример входного файла:
7
34
27
33
11
101
12
95
В этом наборе можно выбрать последовательность 101 (сумма 101) имеет длину 1. Ответ: 1.
В ответе укажите два числа через пробел: сначала значение искомой длины для файла А, затем для файла B.
Решение для А пункта: f = open(’5_27A.txt’) n = int(f.readline()) a = [int(i) for i in f] mx = 0 l = 0 for i in range(len(a)): s = 0 k = 0 for j in range(i,len(a)): s += a[j] k += 1 if s % 101 == 0: if s > mx or (s == mx and k < l): mx = s l = k print(l) Решение для Б пункта: f = open(’5_27B.txt’) n = int(f.readline()) D = 101 mx = 0 l = 0 s = 0 k = [10**20 for i in range(D)] ml = [0 for i in range(D)] for i in range(n): x = int(f.readline()) s += x if s % D == 0: mx = s l = i + 1 s1 = s - k[s % D] l1 = (i+1) - ml[s % D] if s1 > mx or (s1 == mx and l1 < l): l = l1 mx = s1 if s < k[s % D]: k[s % D] = s ml[s % D] = i + 1 print(l)
Ошибка.
Попробуйте повторить позже
Дана последовательность из N натуральных чисел. Рассматриваются все её непрерывные подпоследовательности, такие что сумма элементов каждой из них кратна k = 97 и при этом количество чисел кратных 13 равно 17. Найдите среди них подпоследовательность с максимальной суммой. В ответ укажите значение суммы.
Входные данные: Даны два входных файла: файл A и файл B, каждый из которых содержит в первой строке количество чисел N (). Каждая из следующих N строк содержит натуральное число, не превышающее 10 000.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла А, затем для файла B.
Решение для А пункта: f = open(’5_27A.txt’) n = int(f.readline()) a = [int(i) for i in f] mx = 0 for i in range(len(a)): s = 0 k = 0 for j in range(i,len(a)): s += a[j] if a[j] % 13 == 0: k += 1 if s % 97 == 0 and k == 17: mx = max(mx,s) print(mx) Решение для Б пункта: f = open(’5_27B.txt’) n = int(f.readline()) D = 97 M = 13 d = {(x,y):10**20 for x in range(D) for y in range(-17,76828+1)} #Предварительно, нужно посчитать количество чисел в файле, #кратных 13. Перебор начинается от -17 во избежании ошибки, #поскольку на первых итерациях значение выражения k - 17 будет отрицательным. mx = 0 s = 0 k = 0 for i in range(n): x = int(f.readline()) s += x if x % M == 0: k += 1 if s % D == 0 and k == 17: mx = max(mx,s) s1 = s - d[(s % D,k-17)]#получаем сумму, которая делится нацело на 97 # и содержит ровно 17 чисел кратных 13 mx = max(mx,s1) d[(s%D,k)] = min(d[(s%D,k)],s)#обновление значений в словаре print(mx)
Ошибка.
Попробуйте повторить позже
Дана последовательность из N натуральных чисел. Рассматриваются все её непрерывные подпоследовательности, такие что сумма элементов каждой из них кратна k = 169 и при этом количество простых чисел кратно 10. Найдите среди них подпоследовательность с максимальной суммой. В ответ укажите значение суммы.
Входные данные: Даны два входных файла: файл A и файл B, каждый из которых содержит в первой строке количество чисел N (). Каждая из следующих N строк содержит натуральное число, не превышающее 10 000.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла А, затем для файла B.
Решение для А пункта: def simple(x): return x > 1 and all(x % y for y in range(2,int(x**0.5)+1)) f = open(’5_27A.txt’) n = int(f.readline()) a = [int(i) for i in f] D = 169 M = 10 mx = 0 for i in range(len(a)): s = 0 k = 0 for j in range(i,len(a)): s += a[j] if simple(a[j]): k += 1 if s % D == 0 and k % M == 0: mx = max(mx,s) print(mx) Решение для Б пункта: def simple(x): return x > 1 and all(x % y for y in range(2,int(x**0.5)+1)) f = open(’5_27B.txt’) n = int(f.readline()) D = 169 M = 10 d = {(x,y): 10**20 for x in range(D) for y in range(M)}#словарь, в котором #в качестве ключа у нас будет пара чисел: #первое значение, это остаток при делении на 169, второе - остаток при делении на 10. #В качестве значения у нас будет префиксная сумма. То есть, теперь в случае чего знаем, #при каком остатке при делении на D и при каком остатке при делении на M была какая префиксная сумма. mx = 0 s = 0 k = 0 for i in range(n): x = int(f.readline()) s += x if simple(x):k += 1 if s % D == 0 and k % M == 0: mx = max(mx,s) s1 = s - d[(s % D,k % M)] mx = max(mx,s1) d[(s % D, k % M)] = min(d[(s % D, k % M)],s) print(mx)
Ошибка.
Попробуйте повторить позже
Дана последовательность из N натуральных чисел. Рассматриваются все её непрерывные подпоследовательности, такие что сумма элементов каждой из них кратна k = 13 и при этом количество чисел кратных 5 кратно 7. Найдите среди них подпоследовательность с максимальной суммой. В ответ укажите значение суммы.
Входные данные: Даны два входных файла: файл A и файл B, каждый из которых содержит в первой строке количество чисел N (). Каждая из следующих N строк содержит натуральное число, не превышающее 10 000.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла А, затем для файла B.
Решение для А пункта: f = open(’4_27A.txt’) n = int(f.readline()) a = [int(i) for i in f] mx = 0 for i in range(len(a)): s = 0 k5 = 0 for j in range(i,len(a)): s += a[j] if a[j] % 5 == 0: k5 += 1 if s % 13 == 0 and k5 % 7 == 0: mx = max(mx,s) print(mx) Решение для Б пункта: f = open(’4_27B.txt’) n = int(f.readline()) d = {(x,y):10**20 for x in range(13) for y in range(7)}#словарь, в котором #в качестве ключа у нас будет пара чисел: #первое значение, это остаток при делении на 13, второе - остаток при делении на 7. #В качестве значения у нас будет префиксная сумма. То есть, теперь в случае чего знаем, #при каком остатке при делении на 13 и при каком остатке при делении на 7 была какая префиксная сумма. s = 0 mx = 0 k5 = 0 for i in range(n): x = int(f.readline()) s += x if x % 5 == 0:k5 += 1 if s % 13 == 0 and k5 % 7 == 0: mx = max(mx,s) s1 = s - d[(s%13,k5%7)] mx = max(mx,s1) d[(s % 13,k5 % 7)] = min(s,d[(s % 13,k5 % 7)]) print(mx)
Ошибка.
Попробуйте повторить позже
Дана последовательность из N натуральных чисел. Рассматриваются все её непрерывные подпоследовательности, такие что сумма элементов каждой из них кратна k = 113. Найдите среди них подпоследовательность с максимальной суммой, определите её длину. Если таких подпоследовательностей найдено несколько, в ответе укажите количество элементов самой длинной из них.
Входные данные: Даны два входных файла: файл A и файл B, каждый из которых содержит в первой строке количество чисел N (). Каждая из следующих N строк содержит натуральное число, не превышающее 10 000.
пример входного файла:
7
53
27
33
11
101
12
95
В этом наборе можно выбрать последовательности 53+27+33 (сумма 113) и 101+12 (сумма 113). Самая длинная из них, 34+27+33, имеет длину 3. Ответ: 3.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла А, затем для файла B.
Решение для А пункта: f = open(’4_27A.txt’) n = int(f.readline()) a = [int(i) for i in f] mx = 0 l = 0 for i in range(len(a)): s = 0 k = 0 for j in range(i,len(a)): s += a[j] k += 1 if s % 113 == 0: if s > mx or (s == mx and k > l): mx = s l = k print(l) Решение для Б пункта: f = open(’4_27B.txt’) n = int(f.readline()) D = 113 mx = 0 l = 0 k = [10**20 for i in range(D)] ml = [0 for i in range(D)] s = 0 for i in range(n): x = int(f.readline()) s += x if s % D == 0: mx = s l = i + 1 s1 = s - k[s % D] l1 = (i+1) - ml[s % D] if s1 > mx or (s1 == mx and l1 > l): mx = s1 l = l1 if s < k[s % D]: k[s % D] = s ml[s % D] = i+1 print(l)
Ошибка.
Попробуйте повторить позже
Дана последовательность из N натуральных чисел. Рассматриваются все её непрерывные подпоследовательности, такие что сумма элементов каждой из них кратна максимальному числу из файла, которое находится в ряду Фибоначчи. Найдите среди них подпоследовательность с максимальной суммой, определите её длину. Если таких подпоследовательностей найдено несколько, в ответе укажите количество элементов самой короткой из них.
Входные данные: Даны два входных файла: файл A и файл B, каждый из которых содержит в первой строке количество чисел N (). Каждая из следующих N строк содержит натуральное число, не превышающее 10 000.
пример входного файла:
7
44
11
42
5
34
63
95
В этом наборе можно выбрать последовательность 44+11+42+5+34 (сумма 136), кратна 34 ( это число является максимальным из файла, которое при этом находится в ряду Фибоначчи). Длина этой подпоследовательности равна 5. Ответ: 5.
В ответе укажите два числа через пробел: сначала значение искомой длины для файла А, затем для файла B.
Решение для А пункта: f = open(’3_27A.txt’) n = int(f.readline()) a = [int(i) for i in f] max_a = max(a) fibb = [0,1,1] while fibb[-1] < max_a: fibb.append(fibb[-1] + fibb[-2]) D = max(x for x in set(a) if x in fibb) mx = 0 l = 0 for i in range(len(a)): s = 0 k = 0 for j in range(i,len(a)): s += a[j] k += 1 if s % D == 0: if s > mx or (s == mx and k < l): mx = s l = k print(l) Решение для Б пункта: f = open(’3_27B.txt’) n = int(f.readline()) a = [int(i) for i in f] fibb = [0,1] while fibb[-1] < max(a): fibb.append(fibb[-1] + fibb[-2]) D = max(x for x in set(a) if x in fibb) mx = 0 l = 0 k = [10**20 for i in range(D)] ml = [0 for i in range(D)] s = 0 for i in range(n): x = a[i] s += x if s % D == 0: mx = s l = i + 1 s1 = s - k[s % D] l1 = (i+1) - ml[s % D] if s1 > mx or (s1 == mx and l1 < l): mx = s1 l = l1 if s < k[s % D]: k[s % D] = s ml[s % D] = i + 1 print(l)
Ошибка.
Попробуйте повторить позже
Дана последовательность из N натуральных чисел. Рассматриваются все её непрерывные подпоследовательности, такие что сумма элементов каждой из них кратна максимальному простому числу из файла. Найдите среди них подпоследовательность с максимальной суммой, определите её длину. Если таких подпоследовательностей найдено несколько, в ответе укажите количество элементов самой короткой из них.
Входные данные: Даны два входных файла: файл A и файл B, каждый из которых содержит в первой строке количество чисел N (). Каждая из следующих N строк содержит натуральное число, не превышающее 10 000.
пример входного файла:
7
44
11
42
11
34
63
95
В этом наборе можно выбрать последовательность 44+11 (сумма 55), которая имеет длину 2. Ответ: 2.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла А, затем для файла B.
Решение для А пункта: def simple(x):#функция для проверки числа на простоту return x > 1 and all(x % y for y in range(2,int(x**0.5)+1)) f = open(’3_27A.txt’) n = int(f.readline()) a = [int(i) for i in f] max_simple = max(x for x in a if simple(x)) mx = 0 l = 0 for i in range(len(a)): s = 0 k = 0 for j in range(i,len(a)): s += a[j] k += 1 if s % max_simple == 0: if s > mx or (s == mx and k < l): mx = s l = k print(l) Решение для Б пункта: def simple(x): return x > 1 and all(x % y for y in range(2,int(x**0.5)+1)) f = open(’3_27B.txt’) a = [int(i) for i in f] max_simple = max(x for x in a if simple(x)) k = [10**20 for i in range(max_simple)] ml = [0 for i in range(max_simple)] mx = 0 l = 0 s = 0 for i in range(n): x = a[i] s += x if s % max_simple == 0: mx = s l = i + 1 s1 = s - k[s % max_simple] l1 = (i+1) - ml[s % max_simple] if s1 > mx or (s1 == mx and l1 < l): mx = s1 l = l1 if s < k[s % max_simple]: k[s % max_simple] = s ml[s % max_simple] = i + 1 print(l)
Ошибка.
Попробуйте повторить позже
Дана последовательность из N натуральных чисел. Рассматриваются все её непрерывные подпоследовательности, такие, что сумма элементов каждой из них кратна k = 375. Найдите среди них подпоследовательность с максимальной нечётной суммой, определите её длину. Если таких подпоследовательностей найдено несколько, в ответе укажите количество элементов самой короткой из них.
Входные данные: Даны два входных файла: файл A и файл B, каждый из которых содержит в первой строке количество чисел N . Каждая из следующих N строк содержит натуральное число, не превышающее .
Пример входного файла:
7
58
495
217
674
609
193
375
В этом наборе можно выбрать число 375. Ответом для данного примера будет число 1.
В ответе укажите два числа через пробел: сначала значение искомой длины для файла А, затем для файла B.
Решение для А пункта: f = open(’2_27A.txt’) n = int(f.readline()) a = [int(i) for i in f] mx = 0 l = 0 for i in range(len(a)): s = 0 k = 0 for j in range(i, len(a)): s += a[j] k += 1 if s % 375 == 0 and s % 2 != 0: if s > mx or (s == mx and k < l): mx = s l = k print(l) Решение для Б пункта: f = open(’2_27B.txt’) n = int(f.readline()) mx = 0 l = 0 D = 375 k = [[10 ** 20 for i in range(2)] for j in range(D)] ml = [[0 for i in range(2)] for j in range(D)] s = 0 for i in range(n): x = int(f.readline()) s += x if s % D == 0 and s % 2 != 0: mx = s l = i + 1 s1 = s - k[s % D][1 - s % 2] l1 = (i + 1) - ml[s % D][1 - s % 2] if s1 > mx or (s1 == mx and l1 < l): mx = s1 l = l1 if s < k[s%D][s%2]: k[s%D][s%2] = s ml[s%D][s%2] = i+1 print(l)
Ошибка.
Попробуйте повторить позже
Дана последовательность из N натуральных чисел. Рассматриваются все её непрерывные подпоследовательности, такие, что сумма элементов каждой из них кратна k = 317. Найдите среди них подпоследовательность с максимальной чётной суммой. В ответ укажите значение суммы
Входные данные: Даны два входных файла: файл A и файл B, каждый из которых содержит в первой строке количество чисел N . Каждая из следующих N строк содержит натуральное число, не превышающее .
Пример входного файла:
7
58
495
81
674
609
193
375
В этом наборе можно выбрать числа 58, 495 и 81, которые в сумме образуют число 634, четное число, кратное 317. Ответом для данного примера будет число 634.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла А, затем для файла B.
Решение для А пункта: f = open(’2_27A.txt’) n = int(f.readline()) a = [int(i) for i in f] mx = 0 for i in range(len(a)): s = 0 for j in range(i,len(a)): s += a[j] if s % 317 == 0 and s % 2 == 0: mx = max(mx,s) print(mx) Решение для Б пункта: f = open(’2_27B.txt’) n = int(f.readline()) D = 317 k = [[10**20 for i in range(2)] for j in range(D)]#двумерный массив, #в котором мы будем хранить минимальные префиксные суммы #любой чётности любого возможного остатка при делении на D mx = 0 s = 0 for i in range(n): x = int(f.readline()) s += x if s % D == 0 and s % 2 == 0: mx = max(mx,s) s1 = s - k[s%D][s%2]#новая сумма с отрубленным хвостиком, которая является чётной и кратной 317 mx = max(mx,s1) k[s%D][s%2] = min(k[s%D][s%2],s)#обновляем список k, храним минимальные префиксные суммы print(mx)
Ошибка.
Попробуйте повторить позже
Дана последовательность из N целых чисел. Рассматриваются все её непрерывные подпоследовательности, такие, что сумма элементов каждой из них равна 0. Найдите среди них подпоследовательность с максимальной длиной. Если таких подпоследовательностей найдено несколько, в ответе укажите количество элементов самой длинной из них.
Входные данные: Даны два входных файла: файл A и файл B, каждый из которых содержит в первой строке количество чисел N . Каждая из следующих N строк содержит целое число, по модулю не превышающее .
Пример входного файла:
7
32
10
-18
-22
-22
20
-43
В этом наборе можно выбрать числа 32, 10,-18,-22,-22,20 которые в сумме образуют число 0. Её длина будет равна 6.
В ответе укажите два числа через пробел: сначала значение искомой длины для файла А, затем для файла B.
Решение для А пункта: f = open(’27A_04_2__3knes.txt’) n = int(f.readline()) a = [int(i) for i in f] l = 0 for i in range(len(a)): s = 0 k = 0 for j in range(i,len(a)): s += a[j] k += 1 if s == 0: l = max(l,k) print(l) Решение для Б пункта: ’’’ Префиксная сумма равна 0, только в том случае, если конец и начало префиксной суммы равны между собой. Идея решения: мы создадим словарь, у которого в качестве ключа будет значение префиксной суммы, а в качестве значения у нас будет список, который будет хранить номера индексов, на которых встречалась такая сумма. Затем мы сможем найти максимальную длину вычитав минимальный индекс из максимального индекса, на котором встречалась данная сумма. ’’’ f = open(’27B_04_2__3knet.txt’) n = int(f.readline()) l = 0 d = dict()#создаем словарь, в котором будем хранить значения префиксной суммы и номера индексов s = 0 for i in range(n): x = int(f.readline()) s += x if s not in d.keys():#если данная префиксная сумма ранее не встречалась, #то добавляем первый индекс к данной сумме d[s] = [i] else:#в ином случае добавляем новый индекс в список d[s].append(i) res = [x for x in d.values() if len(x) > 1] #получаем списки индексов, #чьи префиксные сумма встречались более одного раза за файл. l = max(max(x) - min(x) for x in res) #определяем максимальную длину подпоследовательности. print(l)
Ошибка.
Попробуйте повторить позже
Дана последовательность натуральных чисел. Рассматриваются все её непрерывные подпоследовательности, в которых количество простых чисел кратно 10. Найдите наибольшую сумму такой подпоследовательности.
Входные данные: Даны два входных файла: файл A и файл B, каждый из которых содержит в первой строке количество чисел N . Каждая из следующих N строк содержит натуральное число, не превышающее .
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла А, затем для файла B.
def simple(x): if x < 2: return False for i in range(2, int(x ** 0.5) + 1): if x % i == 0: return False return True f = open(’27B_09_5.txt’) n = int(f.readline()) a = [int(i) for i in f] # Чему кратно количество чисел d = 10 r = 0 # Количество встреченных простых чисел # Для сумм с нулевым количеством нужных чисел изначально самая маленькая - начальная tails = [0] + [10 ** 10] * (d - 1) mx = 0 s = 0 for i in range(n): x = a[i] # Увеличиваем общую сумму s += x # Если нашли нужное число - увеличиваем на 1 их количество # перезаписываем хвост, выбирая наименьший для этого # количества оканчивающихся k чисел if simple(x): r += 1 if s < tails[r % d]: tails[r % d] = s # Находим максимальную сумму, отсекая хвост с количеством оканчивающихся k чисел # равным остатку от деления на необходимое количество d if s - tails[r % d] > mx: mx = s - tails[r % d] print(mx)
Ошибка.
Попробуйте повторить позже
На вход программы подаётся натуральное число N, а затем N целых чисел. Необходимо определить минимальную сумму смежных элементов последовательности
Входные данные: Даны два входных файла: файл A и файл B, каждый из которых содержит в первой строке количество чисел N . Каждая из следующих N строк содержит целое число, по модулю не превышающее .
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла А, затем для файла B.
f = open(’27B_09_4.txt’) n = int(f.readline()) a = [int(i) for i in f] # Общая сумма s = 0 # Максимальный префикс mx = 0 mn = 0 for i in range(n): x = a[i] # Увеличиваем общую сумму s += x # Если вычесть из суммы максимальный префикс - будет ли она меньше минимума # если да - перезаписать минимум if s - mx < mn: mn = s - mx # При необходимости заменить префикс mx = max(mx, s) print(mn)
Ошибка.
Попробуйте повторить позже
На вход программы подаётся натуральное число N, а затем N целых чисел. Необходимо определить максимальную сумму смежных элементов последовательности
Входные данные: Даны два входных файла: файл A и файл B, каждый из которых содержит в первой строке количество чисел N . Каждая из следующих N строк содержит целое число, по модулю не превышающее .
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла А, затем для файла B.
f = open(’27B_09_3.txt’) n = int(f.readline()) a = [int(i) for i in f] # Общая сумма s = 0 mx = 0 # Минимальный префикс mn = 0 for i in range(n): x = a[i] # Увеличиваем общую сумму s += x # Если вычесть из суммы минимальный префикс - будет ли она больше максимума # если да - перезаписать максимум if s - mn > mx: mx = s - mn # При необходимости заменить префикс mn = min(mn, s) print(mx)
Ошибка.
Попробуйте повторить позже
Дана последовательность целых чисел. Рассматриваются все её непрерывные подпоследовательности, в которых количество чисел, оканчивающихся на 31 кратно 12. Найдите наибольшую сумму наибольшей такой подпоследовательности.
Входные данные: Даны два входных файла: файл A и файл B, каждый из которых содержит в первой строке количество чисел N . Каждая из следующих N строк содержит целое число, по модулю не превышающее .
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла А, затем для файла B.
f = open(’27B_09_2.txt’) n = int(f.readline()) a = [int(i) for i in f] # На что оканчиваются числа k = 31 # Чему кратно количество чисел d = 12 r = 0 # Количество встреченных чисел оканчивающихся k # Для сумм с нулевым количеством нужных чисел изначально самая маленькая - начальная tails = [0] + [10 ** 10] * (d - 1) mx = 0 s = 0 for i in range(n): x = a[i] # Увеличиваем общую сумму s += x # Если нашли нужное число - увеличиваем на 1 их количество # перезаписываем хвост, выбирая наименьший для этого # количества оканчивающихся k чисел if (abs(x) % 100) == k: r += 1 if s < tails[r % d]: tails[r % d] = s # Находим максимальную сумму, отсекая хвост с количеством оканчивающихся k чисел # равным остатку от деления на необходимое количество d if s - tails[r % d] > mx: mx = s - tails[r % d] print(mx)
Ошибка.
Попробуйте повторить позже
Дана последовательность целых чисел. Рассматриваются все её непрерывные подпоследовательности, в которых количество чисел, делящихся на 18 кратно 7. Найдите наибольшую сумму наибольшей такой подпоследовательности.
Входные данные: Даны два входных файла: файл A и файл B, каждый из которых содержит в первой строке количество чисел N . Каждая из следующих N строк содержит целое число, по модулю не превышающее .
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла А, затем для файла B.
f = open(’27B_09_1.txt’) n = int(f.readline()) a = [int(i) for i in f] # Чему кратны числа k = 18 # Чему кратно количество чисел d = 7 r = 0 # Количество встреченных чисел кратных k # Для сумм с нулевым количеством нужных чисел изначально самая маленькая - начальная tails = [0] + [10 ** 10] * (d - 1) mx = 0 s = 0 for i in range(n): x = a[i] # Увеличиваем общую сумму s += x # Если нашли нужное число - увеличиваем на 1 их количество # перезаписываем хвост, выбирая наименьший для этого # количества кратных k чисел if x % k == 0: r += 1 if s < tails[r % d]: tails[r % d] = s # Находим максимальную сумму, отсекая хвост с количеством кратных k чисел # равным остатку от деления на необходимое количество d if s - tails[r % d] > mx: mx = s - tails[r % d] print(mx)
Ошибка.
Попробуйте повторить позже
Дана последовательность из N целых чисел. Рассматриваются все её непрерывные подпоследовательности, такие, что сумма элементов каждой из них кратна k = 27. Найдите среди них подпоследовательность с максимальной суммой, определите её длину. Если таких подпоследовательностей найдено несколько, в ответе укажите количество элементов самой короткой из них.
Входные данные: Даны два входных файла: файл A и файл B, каждый из которых содержит в первой строке количество чисел N . Каждая из следующих N строк содержит целое число, по модулю не превышающее .
Пример входного файла:
7
35
10
-18
-22
-22
49
-43
В этом наборе можно выбрать числа 35, 10 и -18, которые в сумме образуют число 27. А также числа -22 и 49, тоже в сумме образующие число 27. Ответом для данного примера будет число 2.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла А, затем для файла B.
f = open(’27B_04_2.txt’) n = int(f.readline()) a = [int(i) for i in f] k = 27 # Из сумм, изначально кратных 27-и не нужно ничего вычитать, поэтому для остатка 0 сумма всегда 0 sm = [0] + [10 ** 10] * (k - 1) # Префиксная сумма от начала строки до i имеет длину (i + 1), поэтому изначально хвосты равны -1 tl = [-1] * k s = 0 mx = 0 ln = 0 for i in range(len(a)): # Увеличиваем основную сумму s += a[i] # ВАЖНО - из-за наличия отрицательных чисел нельзя считать s # самой большой суммой на данный момент # Вычитаем из основной суммы префиксную с нужным остатком - получаем кратную 27-и сумму if s - sm[s % k] > mx: mx = s - sm[s % k] ln = i - tl[s % k] elif s - sm[s % k] == mx: # Если суммы равны - выбираем самую короткую ln = min(ln, i - tl[s % k]) # Заменяем префиксную сумму для остатка, если нашли её меньше чем предыдущую if s < sm[s % k]: sm[s % k] = s tl[s % k] = i print(ln)
Ошибка.
Попробуйте повторить позже
Дана последовательность из N натуральных чисел. Рассматриваются все её непрерывные подпоследовательности, такие, что сумма элементов каждой из них кратна k = 375. Найдите среди них подпоследовательность с максимальной суммой, определите её длину. Если таких подпоследовательностей найдено несколько, в ответе укажите количество элементов самой длинной из них.
Входные данные: Даны два входных файла: файл A и файл B, каждый из которых содержит в первой строке количество чисел N . Каждая из следующих N строк содержит натуральное число, не превышающее .
Пример входного файла:
7
58
495
217
674
609
193
375
В этом наборе можно выбрать числа 217, 674 и 609, которые в сумме образуют число 1500, кратное 375. А также последнее число 375. Ответом для данного примера будет число 3.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла А, затем для файла B.
f = open(’27B_04_1.txt’) n = int(f.readline()) a = [int(i) for i in f] k = 375 # Из сумм, изначально кратных 375-и не нужно ничего вычитать, поэтому для остатка 0 сумма всегда 0 sm = [0] + [10 ** 10] * (k - 1) # Префиксная сумма от начала строки до i имеет длину (i + 1), поэтому изначально хвосты равны -1 tl = [-1] * k s = 0 mx = 0 ln = 0 for i in range(len(a)): # Увеличиваем основную сумму s += a[i] # Вычитаем из основной суммы префиксную с нужным остатком - получаем кратную 375-и сумму if s - sm[s % k] > mx: mx = s - sm[s % k] ln = i - tl[s % k] elif s - sm[s % k] == mx: # Если суммы равны - выбираем самую длинную ln = max(ln, i - tl[s % k]) # Заменяем префиксную сумму для остатка, если нашли её меньше чем предыдущую if s < sm[s % k]: sm[s % k] = s tl[s % k] = i print(ln)
Ошибка.
Попробуйте повторить позже
Дана последовательность из N натуральных чисел. Рассматриваются все её непрерывные подпоследовательности, такие что сумма элементов каждой из них кратна k = 97. Найдите среди них подпоследовательность с максимальной суммой, определите её длину. Если таких подпоследовательностей найдено несколько, в ответе укажите количество элементов самой короткой из них.
Входные данные: Даны два входных файла: файл A и файл B, каждый из которых содержит в первой строке количество чисел N (). Каждая из следующих N строк содержит натуральное число, не превышающее 10 000.
пример входного файла:
7
44
11
42
11
34
63
95
В этом наборе можно выбрать последовательности 44+11+42 (сумма 97) и 34+63 (сумма 97). Самая короткая из них, 34+63, имеет длину 2. Ответ: 2.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла А, затем для файла B.
f = open(’1.txt’) n = int(f.readline()) s = 0 res = [] maxs = [0] + [False]*96 lens = [0] + [False]*96 for i in range(1, n+1): s += int(f.readline()) ost = s%97 if maxs[ost] != False and ost != 0: res.append([s-maxs[ost], lens[ost]-i]) elif ost == 0: res.append([s-maxs[ost], lens[ost]-i]) else: maxs[ost] = s lens[ost] = i print(abs(max(res)[1]))
Ошибка.
Попробуйте повторить позже
Дана последовательность из N натуральных чисел. Рассматриваются все её непрерывные подпоследовательности, такие что сумма элементов каждой из них кратна k = 138. Найдите среди них подпоследовательность с максимальной суммой, определите её длину. Если таких подпоследовательностей найдено несколько, в ответе укажите количество элементов самой короткой из них.
Входные данные: Даны два входных файла: файл A и файл B, каждый из которых содержит в первой строке количество чисел N (). Каждая из следующих N строк содержит натуральное число, не превышающее 10 000.
пример входного файла:
7
34
27
58
11
101
37
95
В этом наборе можно выбрать последовательности 34+27+58 (сумма 138) и 101+37 (сумма 138). Самая короткая из них, 101+37, имеет длину 2. Ответ: 2.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла А, затем для файла B.
f = open(’1.txt’) n = int(f.readline()) s = 0 res = [] maxs = [0] + [False]*137 lens = [0] + [False]*137 for i in range(1, n+1): s += int(f.readline()) ost = s%138 if maxs[ost] != False and ost != 0: res.append([s-maxs[ost], lens[ost]-i]) elif ost == 0: res.append([s-maxs[ost], lens[ost]-i]) else: maxs[ost] = s lens[ost] = i print(abs(max(res)[1]))
Ошибка.
Попробуйте повторить позже
Дана последовательность из N натуральных чисел. Рассматриваются все её непрерывные подпоследовательности, такие что сумма элементов каждой из них кратна k = 80. Найдите среди них подпоследовательность с максимальной суммой, определите её длину. Если таких подпоследовательностей найдено несколько, в ответе укажите количество элементов самой короткой из них.
Входные данные: Даны два входных файла: файл A и файл B, каждый из которых содержит в первой строке количество чисел N (). Каждая из следующих N строк содержит натуральное число, не превышающее 10 000.
пример входного файла:
7
34
27
19
11
29
51
95
В этом наборе можно выбрать последовательности 34+27+19 (сумма 80) и 29+51 (сумма 80). Самая короткая из них, 29+51, имеет длину 2. Ответ: 2.
В ответе укажите два числа через пробел: сначала значение искомой суммы для файла А, затем для файла B.
f = open(’1.txt’) n = int(f.readline()) s = 0 res = [] maxs = [0] + [False]*79 lens = [0] + [False]*79 for i in range(1, n+1): s += int(f.readline()) ost = s%80 if maxs[ost] != False and ost != 0: res.append([s-maxs[ost], lens[ost]-i]) elif ost == 0: res.append([s-maxs[ost], lens[ost]-i]) else: maxs[ost] = s lens[ost] = i print(abs(max(res)[1]))