Поскольку вы не показываете код или алгоритм, я просто дам одну идею. Если вам нужна дополнительная помощь, пожалуйста, покажите больше своей работы над этой проблемой.
Обратите внимание, что N
может иметь длину не более 60
бит. Это достаточно мало, чтобы N
можно было довольно быстро разложить на основные факторы. Поэтому сначала разработайте хороший алгоритм факторинга для чисел такого размера.
Ваш алгоритм будет учитывать N
и каждый из элементов в вашем массиве A
. Если есть какой-либо простой множитель N
, который не делится ни на один элемент A
, тогда ваш ответ NO
. Так обстоит дело в вашем примере N = 15
.
Теперь вы работаете с простыми множителями и их показателями в N
и в элементах A
. Теперь вы хотите найти подмножество (или, точнее, подмножество) в A
, где показатели для каждого простого числа складываются с этим в N
. Это значительно уменьшает размеры ваших номеров и облегчает задачу.
Эта последняя часть не тривиальна. Больше работайте над этой проблемой и покажите нам часть своей работы, тогда мы продолжим помогать вам.