Найдите количество чисел кратных k в отрезке - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Задача

Найдите количество чисел кратных k в отрезке [a, b]. Другими словами, вам нужно найти количество целых чисел x таких, что a ≤ x ≤ b и x делится на k.

Входные данные

В единственной строке входных данных находится три целых числа k, a, b (1 ≤ k ≤ 10^9; - 1018 ≤ a ≤ b ≤ 10^9).

Выходные данные

Выведите ответ на задачу.

Вопрос

Как пройти 57 тест программы?Никак не пойму.Я уже даже в строке #8 написал фигню, но это всё равно не работает :\. Не понимаю, как обойти эти ошибки исполнения. Код:
var
a,b,x:Int64;
k:byte;
begin
read(k,a,b);
 
if ((k=1) and(a<0))  then x:=abs(a)+abs(b);
if (a=-1000000000000000000) and (b= 1000000000000000000) then x:=b*2;
if ((a=0) and (b=0)) then x:=1
else
while (a<=b) do
    begin
    if (a mod k =0) then inc (x);
    inc(a);
    end;
writeln(x);
end.
Ввод:
1 -1000000000000000000 1000000000000000000
Вывод:
Ошибка выполнения [TIME_LIMIT_EXCEEDED] Ошибка исполнения, код возврата -1 ===== Использовано: 10000 мс, 0 КБ

Решение задачи: «Найдите количество чисел кратных k в отрезке»

textual
Листинг программы
var k, a, b, x: Int64;
begin
  read(k, a, b);
  if a >= 0 then a := a + k - 1;
  a := a - a mod k;
  if b < 0 then b := b - k + 1;
  b := b - b mod k;
  x := ((b - a) div k) + 1;
  write(x)
end.

Объяснение кода листинга программы

  1. Ввод значений переменных k, a, b с помощью функции read(k, a, b).
  2. Если a >= 0, то a := a + k - 1.
  3. a := a - a mod k.
  4. Если b < 0, то b := b - k + 1.
  5. b := b - b mod k.
  6. x := ((b - a) div k) + 1.
  7. Вывод значения переменной x с помощью функции write(x).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы