Я полагаю, что решить эту проблему с помощью DP или чего-либо еще проще, чем решить предыдущую.
проблема помеченный какдинамическое программирование (Учитывая число N, найдите количество способов записать его как сумму двух или более последовательных целых чисел) и пример 15 = 7 + 8, 1 + 2 + 3 + 4 + 5, 4 + 5 + 6
Я решил с математикой так:
a + (a + 1) + (a + 2) + (a + 3) + ... + (a + k) = N
(k + 1) * a + (1 + 2 + 3 + ... + k) = N
(к + 1)а + к(k + 1) / 2 = N
(k + 1) * (2 * a + k) / 2 = N
Затем проверьте, что если N делится на (k + 1) и (2 * a + k), то я могу найти ответ за время O (sqrt (N))
Вот мой вопрос, как вы можете решить этодинамическое программирование ? а в чем сложность (о)?
П.С .: извините, если это дублирующий вопрос. Я искал, но я могу найти