Количество пар в диапазоне [P, Q] с числами, кратными R, и их произведение лежит в диапазоне [P*Q/4, P*Q]

Опубликовано: 22 Сентября, 2022

Даны 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)