


Посчитать сумму целых чисел от 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)
Но во многих Протокол тестирования он неверный , в чем может быть ошибка
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()
Выскажу предположение, что в некоторых тестах выражение N * (N + 1) выходит за пределы диапазона допустимых значений, отчего и выдаётся ошибка.
Чтобы этого избежать, делить на 2 надо до умножения. Проблема только в том, какое из чисел (N или N + 1) делить.
N = int(input())
if N % 2 == 0:
sum_N = N // 2 * (N + 1)
else:
sum_N = (N + 1) // 2 * N
print(sum_N)
N = int(input().strip())
# Проверка на отрицательное число
if N < 0:
print("Введите положительное число")
else:
sum_N = N * (N + 1) // 2
print(sum_N)
Вариант 1. Числа в последовательности могут только возрастать.
n = int(input()) # при вводе числа .strip() не требуется
print(max(n, 0) * (n + 1) // 2) # если n < 1, сумма равна 0
Вариант 2. Считаем от 1 до n в любом направлении (1, 0, -1, -2, -3, ...).
n = int(input())
print((abs(n - 1) + 1) * (n + 1) // 2) # abs(n - 1) + 1 кол-во чисел в последовательности
Код:
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}")