27.03 Цепочки, выбор подпоследовательности, префиксные суммы
Ошибка.
Попробуйте повторить позже
Пояснение: под префиксной суммой подразумеваются суммы вида pref[0] = a[0], pref[1] = a[0] + a[1], ..., pref[n] = a[0] +
a[1] + ... + a[n]
Подается число , затем
чисел. Требуется посчитать всевозможные префиксные суммы и вывести их на экран в
порядке возрастания через пробел. Для ответа выведите все суммы через пробел для
и чисел
,
,
,
,
,
,
,
,
,
.
n = int(input()) pref = [0]*n pref[0] = int(input()) for i in range(1, n): pref[i] = pref[i-1] + int(input()) print(*pref)
Ошибка.
Попробуйте повторить позже
Подается число n затем n чисел. Требуется посчитать все возможные префиксные суммы, затем посчитать разности рядом стоящих префиксных сумм (разность от элемента с бОльшим индексом) и вывести их на экран в порядке возрастания через пробел. Для ответа выведите все суммы для n = 10 и чисел 7328, 6024, 5008, 3531, 343, 1658, 5228, 9997, 833, 3592.
pref = [0] * n
pref[0] = int(input())
diffs = [0] * n
for i in range(1, n):
pref[i] = pref[i - 1] + int(input())
diffs[i - 1] = abs(pref[i] - pref[i - 1])
print(*sorted(diffs[:-1]))
Ошибка.
Попробуйте повторить позже
Подается число , затем
чисел. Требуется найти длину (количество входящих элементов) наибольшей префиксной
суммы, сумма которой кратна
. Если таких префиксных сумм нет, выведите
. Напишите ответ для
и
чисел
,
,
,
,
,
,
,
,
,
.
pref = [0]*n
pref[0] = int(input())
ans = -1
for i in range(1, n):
pref[i] = pref[i-1] + int(input())
if pref[i] % 100 == 0:
ans = i+1
print(ans)
Ошибка.
Попробуйте повторить позже
Подается число , затем
натуральных чисел. Требуется найти минимальную ненулевую префиксную сумму. Если она
четна, то выведите ее на экран, если нет, то прибавьте минимально возможную префиксную сумму (если минимальной
префиксной суммой является первое число последовательности, то прибавить нужно вторую по величине префиксную
сумму), чтобы итоговая подсумма была кратна
. Если такой суммы нет — выведите
. Напишите через пробел два
числа: ответ для
и чисел
, а также ответ для
и чисел
.
pref = [0]*n
pref[0] = int(input())
ans = 10000000
for i in range(1, n):
pref[i] = pref[i-1] + int(input())
if pref[i] % 2 == 1:
ans = min(ans, pref[i])
if pref[0] % 2 == 0:
print(pref[0])
else:
print(pref[0] + ans if ans != 10000000 else -1)
Ошибка.
Попробуйте повторить позже
Пояснение: под префиксной суммой подразумеваются суммы вида pref[0] = a[0], pref[1] = a[0] + a[1], ..., pref[n] = a[0] +
a[1] + ... + a[n]
Дан массив целых чисел . Напишите количество всевозможных префиксных сумм.
Решение 1 (ручками)
Количество префиксных сумм, которые можно получить в последовательности, равно количеству элементов в
последовательности. Количество элементов в последовательности равно , поэтому количество префиксных сумм так же
равно
.
Решение 2 (программой)
# n - количество чисел в массиве А n = int(input()) pref = [0]*1000 # создали массив "с запасом", потому что не знаем, сколько всего преф. сумм pref[0] = int(input()) k = 1 #первая преф. сумма for i in range(1, n): pref[i] = pref[i - 1] + int(input()) k += 1 print(k) # Можно заметить, что k == n, то есть число преф. сумм равно числу элементов в последовательности
Ошибка.
Попробуйте повторить позже
Пояснение: под префиксной суммой подразумеваются суммы вида pref[0] = a[0], pref[1] = a[0] + a[1], ..., pref[n] = a[0] +
a[1] + ... + a[n]
Дан массив целых чисел . Найдите префиксную сумму
(индексация с 0).
Решение 1 (ручками)
Префиксная сумма равна сумме всех элементов в массиве от индекса
до индекса
. Следовательно, префиксная
сумма
.
Решение 2 (программой)
# n - количество чисел в массиве A n = int(input()) pref = [0]*n pref[0] = int(input()) for i in range(1, n): pref[i] = pref[i-1] + int(input()) if i == 3: print(pref[i]) break
Ошибка.
Попробуйте повторить позже
Пояснение: под префиксной суммой подразумеваются суммы вида pref[0] = a[0], pref[1] = a[0] + a[1], ..., pref[n] = a[0] +
a[1] + ... + a[n]
Дан массив целых чисел . Найдите максимальную префиксную сумму.
Решение 1 (ручками)
Найдём все префиксные суммы:
Следовательно, максимальная префиксная сумма равна .
Решение 2 (программой)
# n - количество чисел в массиве A n = int(input()) pref = [0]*n pref[0] = int(input()) maxim = pref[0] for i in range(1, n): pref[i] = pref[i-1] + int(input()) if pref[i] > maxim: maxim = pref[i] print(maxim)
Ошибка.
Попробуйте повторить позже
Пояснение: под префиксной суммой подразумеваются суммы вида pref[0] = a[0], pref[1] = a[0] + a[1], ..., pref[n] = a[0] +
a[1] + ... + a[n]
Дан массив целых чисел . Найдите разность максимальной и минимальной префиксных
сумм.
Решение 1 (ручками)
Найдём все префиксные суммы:
Максимальная префиксная сумма равна , а минимальная
. Поэтому
.
Решение 2 (программой)
# n - количество чисел в массиве A n = int(input()) pref = [0]*n pref[0] = int(input()) maxim = pref[0] minim = pref[0] for i in range(1, n): pref[i] = pref[i-1] + int(input()) if pref[i] > maxim: maxim = pref[i] if pref[i] < minim: minim = pref[i] print(maxim - minim)
Ошибка.
Попробуйте повторить позже
Пояснение: под префиксной суммой подразумеваются суммы вида pref[0] = a[0], pref[1] = a[0] + a[1], ..., pref[n] = a[0] +
a[1] + ... + a[n]
Дан массив целых чисел . Найдите разность префиксных сумм
и
(индексация с
0).
Решение 1 (ручками)
Разность префиксных сумм и
равна сумме элементов последовательности с индексами
и
.
Следовательно,
.
Решение 2 (программой)
# n - количество чисел в массиве A n = int(input()) pref = [0]*n pref[0] = int(input()) s5, s2 = 0, 0 for i in range(1, n): pref[i] = pref[i-1] + int(input()) if i == 2: s2 = pref[i] if i == 5: s5 = pref[i] print(s5 - s2)
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
Имеется набор данных, состоящий из положительных целых чисел или
.
Необходимо расположить числа в таком порядке, чтобы максимизировать число сумм на всех префиксах последовательности, которые являются простыми числами. Программа должна напечатать одно число — максимальное количество префиксных сумм, которые являются простыми числами.
Входные данные:
Даны два входных файла (файл А и файл В), каждый из которых содержит в первой строке одно целое число
— количество чисел. Каждая из следующих
строк содержит натуральное число
или
.
Пример входного файла:
При таких исходных данных оптимально расположить числа следующим образом: или
. Тогда
префиксные суммы будут равны
или
соответственно. Ответ:
.
В ответе укажите два числа: сначала значение для файла А, затем для файла B.
def is_prime(k): if k == 1: return False for j in range(2, int(k ** 0.5) + 1): if k % j == 0: return False return True f = open(’Задание_27_B__loof.txt’) n = int(f.readline()) ones, twos = 0, 0 for i in range(n): ones += (int(f.readline()) == 1) twos = n - ones # Если не существует единиц или двоек if not ones or not twos: a = [1] * ones + [2] * twos else: a = [2, 1] + [2] * (twos - 1) + [1] * (ones - 1) # Простое число - нечетное. Первое простое - это 2. Далее 3, 5, 7, 11 и тд - все они нечетные. # Но лучшего расположения мы добьемся при скачках сначала по нечетным, а потом все остальное. ans = 0 s = 0 for i in range(len(a)): s += a[i] if is_prime(s): ans += 1 print(ans)
Ошибка.
Попробуйте повторить позже
Дан массив целых чисел . Напишите кол-во всевозможных префиксных сумм.
Количество префиксных сумм, которые можно получить в последовательности, на один больше количества элементов в
последовательности (учитываем еще префиксную сумму 0). Количество элементов в последовательности равно , поэтому
количество префиксных сумм равно
.
Ошибка.
Попробуйте повторить позже
Дан массив целых чисел . Найдите префиксную сумму
.
Префиксная сумма равна сумме всех элементов в массиве от индекса
до индекса
. Следовательно, префиксная
сумма
.
Ошибка.
Попробуйте повторить позже
Дан массив целых чисел . Найдите максимальную префиксную сумму.
Найдём все префиксные суммы:
Следовательно, максимальная префиксная сумма равна .
Ошибка.
Попробуйте повторить позже
Дан массив целых чисел . Найдите разность максимальной и минимальной префиксных
сумм.
Найдём все префиксные суммы:
Максимальная префиксная сумма равна , а минимальная
. Поэтому
.
Ошибка.
Попробуйте повторить позже
Пояснение: под префиксной суммой подразумеваются суммы вида pref[0] = a[0], pref[1] = a[0] + a[1], ..., pref[n] = a[0] +
a[1] + ... + a[n]
Подается число , затем
чисел. Требуется найти длину (количество входящих элементов) наибольшей префиксной
суммы, сумма которой кратна
. Если таких префиксных сумм нет, выведите
. Напишите ответ для
и
чисел
,
,
,
,
,
,
,
,
,
.
n = int(input()) pref = [0]*n pref[0] = int(input()) ans = -1 maxim = pref[0] if pref[0] % 100 == 0: ans = 1 for i in range(1, n): pref[i] = pref[i-1] + int(input()) if pref[i] % 100 == 0 and pref[i] > maxim: ans = i+1 maxim = pref[i] print(ans)
Ошибка.
Попробуйте повторить позже
Подается число n затем n чисел. Требуется посчитать всевозможные префиксные суммы, затем посчитать разности рядом
стоящих префиксных сумм (разность от элемента с бОльшим индексом) и вывести их на экран через пробел. Для ответа
выведите все суммы для n и чисел
.
n = int(input()) pref = [0] * n pref[0] = int(input()) diffs = [0] * (n - 1) # всего n-1 пар подряд идущих чисел и n-1 разностей for i in range(1, n): pref[i] = pref[i - 1] + int(input()) # Заполнение преф. сумм diffs[i - 1] = pref[i] - pref[i - 1] # Разность ближних преф. сумм print(diffs)
Ошибка.
Попробуйте повторить позже
Подается число n затем n чисел. Требуется найти длину (из скольких элементов она состоит) наибольшей префиксной
суммы, чья сумма кратна . Если таких префиксных сумм нет, выведите
. Напишите ответ для n
и чисел
.
n = int(input()) pref = [0] * n pref[0] = int(input()) ans = -1 if pref[0] % 100 == 0: ans = 1 for i in range(1, n): pref[i] = pref[i - 1] + int(input()) if pref[i] % 100 == 0: ans = i + 1 # Индексация с 0 print(ans)