Подсчитайте возможные значения K, такие что A%K = B%K
Даны два целых числа A и B , задача состоит в том, чтобы подсчитать возможные значения K такие, что A%K = B%K . Если счетчик бесконечен, выведите -1 .
Примеры:
Input: A = 2, B = 4
Output: 2
Explanation: The set of all possible values of K is {1, 2}.
As 2%1 = 4%1 = 0 and 2%2 = 4%2 = 0.Input: A = 5, B = 5
Output: -1
Explanation: There are infinite values of K as all possible integer value of K satisfies the given condition.
Подход: Данную задачу можно решить, используя следующее наблюдение, что все значения A и B можно разделить на следующие два случая:
- Случай, когда А = В. В таких случаях допустимым ответом является все возможное целочисленное значение K. Следовательно, значение искомого счетчика бесконечно.
- Случай, когда А > В. В таких случаях можно заметить, что значение K действительно, если K делит (A – B) . Для случаев с B > A просто поменяйте местами значения A и B.
Поэтому вычислите все возможные значения K так, чтобы оно полностью делило (A – B) , что и является требуемым значением.
Ниже приведена реализация вышеуказанного подхода:
Временная сложность: O(√(A – B))
Вспомогательное пространство: O(1)