TransWikia.com

Базовый код на Python работает очень долго из-за ввода больших чисел

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)

One Answer

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

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP