Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

ifeaz Ученик (143), открыт 3 дня назад
Готовлюсь немного к олипиаде по инфр 9класс. Такое задание
Посчитать сумму целых чисел от 1 до N.

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

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

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

# Проверка на отрицательное число
if N < 0:
print("Введите положительное число")
else:
sum_N = N * (N + 1) // 2
print(sum_N)
ifeazУченик (143) 3 дня назад
Так писал также получается что протоколы не верны
ФермаКактусов Высший разум (212761) 3 дня назад
 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()
Вертолётов 625 Мудрец (13288) 3 дня назад
Код:
 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}")
Андрей Высший разум (462142) 3 дня назад
Вариант 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 кол-во чисел в последовательности
Алексей Пинчук Мудрец (16754) 3 дня назад
Выскажу предположение, что в некоторых тестах выражение 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)
Похожие вопросы