Top.Mail.Ru
Ответы
Аватар пользователя
7мес
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+3

Посчитать сумму целых чисел от 1 до N. PYTHON

Готовлюсь немного к олипиаде по инфр 9класс. Такое задание
Посчитать сумму целых чисел от 1 до N.

Входные данные
Задано единственное целое число, не превосходящее по модулю 2^32 - 1.

Выходные данные
Сумма целых чисел от 1 до N.

Я написал на Python :
N = int(input().strip())
sum_N = N * (N + 1) // 2
print(sum_N)
Но во многих Протокол тестирования он неверный , в чем может быть ошибка

По дате
По рейтингу
Аватар пользователя
Новичок
7мес
1234567891011121314151617
 def sum_of_integers(N): 
    return (N * (N + 1)) // 2 
 
def main(): 
    try: 
        N = int(input("Введите целое число N: ")) 
        if abs(N) > (2**32 - 1): 
            print("Число превышает допустимый диапазон.") 
        else: 
            total_sum = sum_of_integers(N) 
            print(f"Сумма целых чисел от 1 до {N} составляет: {total_sum}") 
    except ValueError: 
        print("Пожалуйста, введите корректное целое число.") 
 
if __name__ == "__main__": 
    main() 
 
Аватар пользователя
Мудрец
7мес

Выскажу предположение, что в некоторых тестах выражение N * (N + 1) выходит за пределы диапазона допустимых значений, отчего и выдаётся ошибка.

Чтобы этого избежать, делить на 2 надо до умножения. Проблема только в том, какое из чисел (N или N + 1) делить.

123456
 N = int(input())
if N % 2 == 0: 
  sum_N = N // 2 * (N + 1)
else: 
  sum_N = (N + 1) // 2 * N 
print(sum_N) 
Аватар пользователя
7мес

N = int(input().strip())

# Проверка на отрицательное число
if N < 0:
print("Введите положительное число")
else:
sum_N = N * (N + 1) // 2
print(sum_N)

Аватар пользователя
Высший разум
7мес

Вариант 1. Числа в последовательности могут только возрастать.

12
 n = int(input()) # при вводе числа .strip() не требуется
print(max(n, 0) * (n + 1) // 2) # если n < 1, сумма равна 0 

Вариант 2. Считаем от 1 до n в любом направлении (1, 0, -1, -2, -3, ...).

12
 n = int(input())
print((abs(n - 1) + 1) * (n + 1) // 2) # abs(n - 1) + 1 кол-во чисел в последовательности 
Аватар пользователя
Мудрец
7мес

Код:

123456789101112131415161718
 def sum_of_integers(N): 
    # Используем формулу суммы арифметической прогрессии 
    return N * (N + 1) // 2 
 
# Чтение входных данных 
try: 
    N = int(input("Введите целое число N: ")) 
    if N < 0 or N > 2**32 - 1: 
        raise ValueError("Число должно быть в диапазоне от 0 до 2^32 - 1.") 
     
    # Вычисление суммы 
    result = sum_of_integers(N) 
     
    # Вывод результата 
    print(f"Сумма целых чисел от 1 до {N} равна: {result}") 
except ValueError as e: 
    print(f"Ошибка: {e}")