Количество пар в диапазоне [P, Q] с числами, кратными R, и их произведение лежит в диапазоне [P*Q/4, P*Q]
Даны 3 положительных целых числа P , Q и R , задача состоит в том, чтобы найти количество пар таких, что оба элемента находятся в диапазоне [P, Q] и числа должны быть кратны R , а произведение чисел должно лежать в диапазоне [P×Q/4, P×Q] . Если такой пары не существует, выведите -1.
Примеры:
Input: P = 14, Q = 30, R = 5
Output:15 20
15 25
Explanation:
Multiple of R between P & Q are {15, 20, 25, 30}.
P × Q = 420 and P × Q / 4 = 105
So the pairs which satisfies the above conditions are 15, 20 and 15, 25.Input: P = 10, Q = 20, R = 7
Output: 7 14
Подход: чтобы сначала решить эту проблему, найдите минимальный и максимальный диапазон до пар, которые могут существовать, а затем найдите пары, которые удовлетворяют вышеуказанным условиям. Выполните следующие шаги, чтобы решить проблему:
- Инициализируйте вектор, скажем, v для хранения всех чисел, которые находятся в диапазоне [P, Q] и кратны R , и вектор пар, скажем , для хранения пар, которые следуют вышеупомянутым условиям.
- Выполните итерацию в диапазоне [P, Q], используя переменную i , и проверьте, делится ли i на R , затем вставьте i в вектор v .
- Выполните итерацию в диапазоне [0, v.size()-1] , используя переменную i , и выполните следующие шаги:
- Выполните итерацию в диапазоне [i+1, v.size()-1] , используя переменную j , и проверьте, если v[j] * v[i] <= P * Q и v[j] * v[i] >= P * Q/4 , затем вставьте пару в ответ .
- Если ans.size() равен 0 , выведите -1.
- В противном случае выведите пары в ans .
Ниже приведена реализация вышеуказанного подхода:
Временная сложность: O(N 2 ), где N равно Q – P + 1.
Вспомогательное пространство: O(N)