Помогите чайнику
Дана задача с такими условиямиПосчитать сумму чисел от 1 до N. Значение N по модулю не превышает 10^{9} .
Входные данные содержат одно целое число — N.
Нужно вывести целое число — сумму чисел от 1 до N.
Мой "код" на Python выглядит так:
N=int(input())
d=1
rez=((2+d*(N-1))*N)/2
print(int(rez))
Из 8 вариантов переменной N, c 5 получается правильный результат, а два выдают неправильный. В чём может быть проблема?
Подробнее
программирование,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,python,помощь,песочница,пидоры помогите,реактор помоги
Еще на тему
Там вот такая подсказка есть. если это что то даст
"Для представления целых чисел в языках программирования обычно используется несколько
целочисленных типов данных с разными допустимыми диапазонами значений."
d=1.0
rez=((1.0+(N))*N)/2
print(float(rez))
N=int64(input())
rez=((1+N)*N)/2
print(int64(rez))
if N >= 0:
rez = N*(N+1) / 2
else:
rez = -N*(N-1)/2 + 1
Может до N исключительно?
А может просто цикл запилить? Не так элегантно, но действенно.
Исключение у нас одно, так что городить огород нет смысла.
Хотя, у меня тоже тут тот еще велосипед
sum(range(N, 2))
например: input("input \n$")
А со вторым неправильны 3, два начальных и один другой
У меня остается только одно предположение. int ограничен 2^63 в x64 версии (где то 1e+18), а пограничное значение N - 1e^10. При перемножении разряд может переполниться. Поэтому, давай добавим деление заранее, что бы избежать этого.
N2 = N / 2
На
N2 = N // 2
Если не поможет, тогда я уже точно ничего путного не придумаю.
от 1 до 0 сумма будет равна 1.
А тут 0 будет. Если, конечно, я не путаю сейчас ничего
и числа бери либо double, либо int64_t
если N больше 0 - то (N + 1) * N / 2
int64_t N = int64(input())
if (N больше 0)
then
rez = (int64_t(1) + N) * N / 2;
else
rez = (int64_t(2) + module(N)) * (int64_t(1) - module(N)) / 2;
endif
N=int(input())
rez = int((N+1)*N/2)
print(rez)