PASCALТребуется посчитать сумму целых чисел, расположенных между числами 1 и
PASCAL
Нужно посчитать сумму целых чисел, расположенных между числами 1 и N включительно.
Входные данные
В единственной строке входного файла INPUT.TXT записано единственное целое число N, не превышающее по безусловной величине 10^4.
Выходные данные
В единственную строку выходного файла OUTPUT.TXT нужно вывести одно целое число сумму чисел, расположенных меж 1 и N включительно.
МОЁ РЕШЕНИЕ:
var n, i, s, z: longint;
begin
assign(input, 'input.txt'); reset(input);
assign(output, 'output.txt'); rewrite(output);
z:=0;
s:=0;
read(n); begin
if nlt;=z then
exit;
end;
for i := 1 to n do s+=i;
write(s);
end.
Но код не воспринимает система, что может быть не так? PS://
Но сложность этой задачи не в вычислении этой суммы и приведенный выше метод не проходит на третьем тесте! Оказывается, тут очень пристально необходимо прочитать условия задачки, неподражаемо ограничения на число N. Дело в том, что это число может быть отрицательным!!! Беря во внимание это попробуйте без помощи других доработать и воплотить верный метод решения этой задачки.
UPD: забыл условие поставить,что n не обязано превышать 10^4
UPD2:
поправил ошибки, учёл что nlt;10000, но все равно "задачка решена неверно"
КОД:
var n, i, s, z: longint;
begin
assign(input, 'input.txt'); reset(input);
assign(output, 'output.txt'); rewrite(output);
z:=0;
s:=0;
read(n); begin
if nlt;=z then
exit;
end;
if nlt;=10000 then
for i := 1 to n do s+=i
else exit;
write(s);
end.
Ваши ошибки:
1) Объявление текстовых переменных и неиспользование их.
2) Негодный тип longint, для чего таковой великий тип?
Типа Integer полностью довольно (-32 768 32 767).
3) Объявление абсолютно негодной переменной z.
4) Основная ошибка - это недопонимание задания, и соответственно ошибочно построенный метод.
Пробуйте это, самое наилучшее по времени, малое кол-во переменных. Применен способ Гаусса, можно было и арифм. прогрессию.
var
n: integer;
text: text;
begin
assign(text, 'input.txt'); reset(text);
readln(text, n); close(text);
if (n gt; 10000) then exit;
assign(text, 'output.txt'); rewrite(text);
if n lt; 0 then Writeln(text, -((1 + abs(n)) * (абс(n) / 2) - 1))
else Writeln(text, (1 + n) * (n / 2));
close(text);
end.
-
Вопросы ответы
Статьи
Информатика
Статьи
Математика.
Разные вопросы.
Разные вопросы.
Математика.
Разные вопросы.
Математика.
Физика.
Геометрия.
Разные вопросы.
Обществознание.