Задано: установлено A = {a0, a1, ..., aN-1}
(1 ≤ N ≤ 100
), с 2 ≤ ai ≤ 500
.
Задано: Найти сумму всех наименее общих кратных (LCM) всех подмножеств A
размером не менее 2.
LCM набора B = {b0, b1, ..., bk-1}
определяется как минимальное целое число Bmin
такое, что bi | Bmin
для всех 0 ≤ i < k
.
Пример:
Пусть N = 3
и A = {2, 6, 7}
, тогда:
LCM({2, 6}) = 6
LCM({2, 7}) = 14
LCM({6, 7}) = 42
LCM({2, 6, 7}) = 42
----------------------- +
answer 104
Наивный подход состоял бы в том, чтобы просто вычислить LCM для всех подмножеств O(2N)
, что невозможно для достаточно больших N
.
Эскиз решения:
Задача получается из конкурса * который также предоставил эскиз решения . Именно здесь возникает моя проблема: я не понимаю намекающий подход.
Решение читает (по модулю некоторые небольшие проблемы с фиксированной грамматикой):
Решение немного сложно. Если мы внимательно наблюдаем, мы видим, что целые числа находятся между
2
и500
. Итак, если мы просто факторизуем числа, мы получаем следующие максимальные мощности:
2 8
3 5
5 3
7 3
11 2
13 2
17 2
19 2
Кроме этого, все простые числа имеют мощность 1. Таким образом, мы можем легко вычислить все возможные состояния, используя эти целые числа, оставляя состояния
9 * 6 * 4 * 4 * 3 * 3 * 3 * 3
, что почти равно70000
. Для других целых чисел мы можем сделать dp следующим образом:dp[70000][i]
, гдеi
может быть0
до100
. Однако, посколькуdp[i]
зависит отdp[i-1]
, поэтомуdp[70000][2]
достаточно. Это оставляет сложностьn * 70000
, которая возможна.
У меня есть следующие конкретные вопросы:
- Что подразумевается под этими состояниями?
- Поддерживает ли
dp
динамическое программирование, и если да, то какое рекуррентное отношение решается? - Как
dp[i]
вычисляется изdp[i-1]
? - Почему большие простые числа не влияют на количество состояний? Каждое из них происходит либо
0
, либо1
раз. Если число состояний не будет умножено на2
для каждого из этих простых чисел (что опять приведет к неосуществимому пространству состояний)?
* Оригинальное описание проблемы можно найти из этого источника (проблема F). Этот вопрос является упрощенной версией этого описания.