Одна из возможностей - воспользоваться преимуществом целочисленной арифметики c, чтобы избавиться от некоторых крайних случаев. Иногда A
и B
оба, ни одно, либо одно или другое делится на k
. И простое их вычитание не поможет решить проблему. Таким образом, одно из решений - разделить каждую на k
перед их вычитанием.
Скажем, k = 7, A = 12, and B = 54
. 54/7 - 12/7 = 7 - 1 = 6 (14,21,28,35,42,49)
Но что, если A
было 14
?
54/7 - 14/7 = 7 - 2 = 5 (14,21,28,35,42,49)
Ответ один. Итак, когда A
делится на k
, необходимо добавить 1
.
Что, если A
и B
делятся на k
?
56/7 - 14/7 = 8 - 2 = 6 = (14,21,28,34,42,49,56)
. Ответ снова, разовый, поэтому специальный случай деления A
на k
позаботится об этом, добавив 1
int result = (B/k - A/k) + ((A%k == 0) ? 1 : 0);