Базовый код на Python работает очень долго из-за ввода больших чисел
Задачка: Посчитать сумму чисел от 1 до N. Значение N по модулю не превышает 10^9.
При вводе +-10^9 зависает. При вводе +-10^8 работает, но долго. Как исправить?
Код:
n = int(input())
summa = 0
if n >= 0:
while n >= 1:
summa += n
n -= 1
elif n < 0:
while n <= 1:
summa += n
n += 1
print(summa)
Ответы (1 шт):
Автор решения: vp_arth
→ Ссылка
from math import ceil
def ariphm_sum(start, stop, step=1):
""" Сумма арифметической прогрессии
Аргументы аналогичны функции range, т.е. [start, stop) с шагом step
"""
n = ceil((stop - start) / step)
return (start + step*(n-1)/2) * n
assert ariphm_sum(1, 101) == 5050
assert ariphm_sum(-100, 0) == -5050
assert ariphm_sum(-100, 101) == 0
assert ariphm_sum(1, 8, 2) == 16
assert ariphm_sum(1, 10, 2) == 25
assert ariphm_sum(-3, 10, 2) == 21
assert ariphm_sum(-10**8, 10**8+2) == 100000001