Есть такая вещь, как динамическое программирование (dynamic programming). Если кратко, то мы находим закономерность(формулу, обычно рекурсивную) и прост считаем что там и как там. Иногда запоминаем промежуточные результаты, чтобы не вылететь в экспоненциальную сложность (дада, Фибоначчи это простейший пример дин. прогр.).
И вот подобную тему очень любят на разных соревнованиях, проверка на логику, математику и умение это закодчить. Идеально прям. Но к сожалению некоторые умники втащили эти задачи на собесы. И вот возникает вопрос к умникам: а вы вообще применяли это в рамках своей работы?
Не побоюсь сказать, что мелкий % задач требуют таких решений (биоинформатика, парсинг, etc), но вот зачем это требовать для очередного таска "соберем список кафка топиков, приклеим мейлы команд и запишем все в эксель" я не понимаю. Имхо, лучше бы дали производные посчитать, это хотя бы (мне) весело, показатель моих навыков будет такой же.
Как можно догадаться, я не щелкатель дин. прогр, хотя задачи интересные. Просто условно-бесполезные на работе с 9 до 17.
(если это читает почти темно-красный грандмастер с Codeforces/Topcoder - готов узнать секрет приготовления задач за О(1) в лс)