Задачка с олимпиады, как решать?
ну?
так задачка на три цикла.
Крутите три цикла, делаете перебор всех вариантов.while marshrutka16
  while marshrutka17
    while marshrutka21
      if (185-16*marshrutka16-17*marshrutka17-21*marshrutka21==0) then print 'this variant is fine';
И крутите каждый цикл от нуля до 185/размер маршрутки
185 = 16A + 17B + 21C, где A, B, C - целые.
Несложно сообразить также то, что A, B, C - ограничены сверху.
Далее можно хоть тупым перебором перебрать все возможные варианты - те самые "3 цикла", о которых говорит ваш информатик - и понять, сколько раз равенство будет верным.
P.S.: Мне кажется, что в таком виде - это не мехмат, это средняя школа.