Как посчитать БЖУ?
https://www.google.com/search?q=линейная+алгебра+п...
https://ru.wikipedia.org/wiki/Матрица_перехода
gre=11.7*pro+2.7*fat+75*cbh
egg=12.7*pro+11.5*fat+0.7*cbh
sal=1.4*pro+90*fat+0*cbh
Матрица перехода:
11.7 2.7 75
12.7 11.5 0.7
1.4 90 0
Нужно вычислить обратную матрицу и умножить эту обратную на искомый столбец (100, 50, 150). Не забыть, что за единицу измерения взяли 100 г.
Это задача о многомерном рюкзаке (multi-dimensional knapsack). Каких-то простых трюков, как с обычным одномерным рюкзаком тут нет. Только перебор с отсечениями. 

Еще можно свести задачу к целочисленному линейному программированию. Вводите переменные - сколько штук каждого пункта съели, составляете линейные уравнения. Потом можно это все скормить какому-нибудь решателю. Сейчас много библиотек и они довольно быстро такие задачи щелкают. Гуглите "integer linear programming solver".