Меня посылали на олимпиаду по программированию, так там проверяющие знали только BASIC, это полный пейсец. Я написал им полностью все алгоритмы на C++ и получил 0 баллов. Больше на олимпиады не ходил.
Единственные задачки, которые представляют интерес - это реальные задания из проектов, за которые платятся деньги
Учебные задачи обычно высосаны из пальца и очень редко близки к программерским будням.
А задачка интересная... нужно найти все комбинации чисел, не превышающих K, которые в сумме дают N.
Задача, кстати, имеет решение даже при K>N. На этот случай нужно ввести, допустим, P, которое равно MIN(K,N).
Максимальное число прыжков соответственно будет при K=1 и равно N.
Думаю, решать стоит перебором "в лоб"... Хотя если олимпиада универская, можно и по формулам комбинаторики
Идея перебора такова:
0) Создаём переменную для кол-ва вариантов, допустим I=0
1) Вариантов первого прыжка у нас P. I=I+P
2) Для каждого из P прыжков считаем оставшееся расстояние D=(N-P)
3) Если D=0, то выходим из этой ветки
4) Если D>0, то считаем кол-во вариантов для следующего прыжка. Их будет V=MIN(D,P). I=I+V
Видно, что шаги 1 и 4 идентичны, можно оформить это всё в виде рекурсии и начинать с I=0 и D=P.
Мысли пока сумбурные, может и напутал чего...