Stack Overflow на русском Asked on February 14, 2021
Задачка: Посчитать сумму чисел от 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)
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
Answered by vp_arth on February 14, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP