ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1068. Сумма

Почему не засчитывает?Why does not count?№1068.PascalABC
Послано Yura 23 дек 2016 10:30
var
  a: integer;
  b: real;

begin
  readln(a);
  if (abs(a) < 10001) then
  begin
    if (a < 0) then
      b := (a + 1) * (-a + 2) / 2
    else b := 0;
    if (a > 0) then
      b := (a + 1) * a / 2 else
    if (a < 0) then
      b := (a + 1) * (-a + 2) / 2
    else b := 1;
    writeln(b);
  end;
end.
Re: Почему не засчитывает?Why does not count?№1068.PascalABC
Послано Oleg Baskakov 23 дек 2016 17:22
Я так понимаю, ты используешь тип real для b, потому что / не работает. Следует помнить, что для целочисленного деления нужно использовать div, а не /.
То есть, вариант 1 — заменить b: real на b: integer и все / на div.
Вариант 2 — можно продолжать использовать /, но вместо writeln(b) следует написать writeln(b:0:0) (второе :0 — количество знаков после запятой для вывода).
Также, проверки типа if (abs(a) < 10001) не нужны — если в задаче сказано о таком ограничении на входные данные, значит в тестах так честно и будет, и не нужно это проверять.
Re: Почему не засчитывает?Why does not count?№1068.PascalABC
Послано Ahmet 19 окт 2023 22:35
А у меня тоже такая же проблема:

var N: integer;
begin
readln(n);
if (abs(n)>10000) then writeln('Îøèáêà ââîäà') else
if N>=0 then writeln(((1+n)*n)/2)
else writeln(((1+n)*(abs(n)+2))/2);
end.

IS that wrong answer?