Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

Артемий Крылов Ученик (110), открыт 1 неделю назад
Вот мой код
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()
1 ответ
ᅠ ᅠ Гуру (3657) 1 неделю назад
Как минимум, на скрине плохо видно. Никто не будет вчитываться в то, что там написано, а уж тем более решать за бесплатно.
Вот мой код
Ну так раз ты его написал, в чем проблема?
Похожие вопросы