Для данного числа N найдите количество способов записать его как сумму двух или более последовательных целых чисел

Вот задача , помеченная как динамическое программирование (Учитывая число 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

(k + 1) a + k (k + 1) / 2 = N

(k + 1) * (2 * a + k) / 2 = N

Затем проверьте, что если N делится на (k + 1) и (2 * a + k), то я могу найти ответ за время O (sqrt (N))

Вот мой вопрос, как вы можете решить эту проблему с помощью динамического программирования ? а в чем сложность (О)?

PS: извините, если это повторяющийся вопрос. Я искал, но смог найти

5
задан 27 December 2010 в 10:47
поделиться