Top.Mail.Ru
Ответы

Помогите решать задачу по программированию

Вот мой код
def calculate_result(n, arr, k):
# Суммируем положительные значения
total_sum = sum(value for value in arr if value > 0)
zero_segment_count = 0
in_zero_segment = False # Указывает, находимся ли в сегменте из нулей

for value in arr:
if value <= 0: # Если значение ноль или отрицательное
if not in_zero_segment: # Мы не в сегменте из нулей
zero_segment_count += 1 # Увеличиваем сегмент
in_zero_segment = True
else:
in_zero_segment = False # Если положительное значение, сбрасываем

# Итоговое значение: сумма положительных значений + (количество сегментов * k)
result = (total_sum + zero_segment_count * k) % (10**9 + 7)

return result # Вернем результат

def main():
t = int(input()) # Количество тестов
results = []

for _ in range(t):
n = int(input()) # Считываем количество элементов в тесте
arr = []

for _ in range(n):
sign, p = input().split() # Считываем знак и значение
p = int(p)
value = (1 << p) if sign == '+' else -(1 << p) # Преобразуем в соответствующее значение
arr.append(value) # Добавляем в массив

sign_k, p_k = input().split() # Считываем k
k = (1 << int(p_k)) if sign_k == '+' else -(1 << int(p_k))

result = calculate_result(n, arr, k) # Вычисляем результат
results.append(result) # Добавляем результат в список

print("\n".join(map(str, results))) # Печатаем результаты всех тестов

if __name__ == "__main__":
main()

По дате
По рейтингу
Аватар пользователя
8мес

Как минимум, на скрине плохо видно. Никто не будет вчитываться в то, что там написано, а уж тем более решать за бесплатно.

Вот мой код

Ну так раз ты его написал, в чем проблема?