Найдите количество чисел кратных 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.
Объяснение кода листинга программы
- Ввод значений переменных k, a, b с помощью функции read(k, a, b).
- Если a >= 0, то a := a + k - 1.
- a := a - a mod k.
- Если b < 0, то b := b - k + 1.
- b := b - b mod k.
- x := ((b - a) div k) + 1.
- Вывод значения переменной x с помощью функции write(x).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д