↓ これって高校の知識で解けますか?

 今、ともひこ君はガチャの「課金石を2000個買って特典ゲット」
をしようとしている。
そこで課金石をパック買いで小分けにして
最安値で満たすやり方を求めようとしている。

課金パックの買い方は以下のようになっており、大量セットほど単価が安くなる。

パックA { 50個 ,70円} を a回、
パックB { 100個 ,130円} を b回、
パックC { 250個 ,300円} を c回…
パックZ { 4000個 ,4400円} を z回 買う。
…というように。

ここでは、簡略化してパックCまでとする。

そうすると、3変数の2つの関数で表される (変数 a,b,c ∈ N+ である)

式の1… S(Stock) 購入する課金石数 =
   s(a,b,c) = 50a + 100b + 250c

式の2… P(Price) 支払う総額 =
   p(a,b,c) = 70a + 130b + 300c

・S = s(a,b,c) >= 2000 という条件を満たす。

・この時、価格 を最小値とするような
P = p(a,b,c) --> min. とするような (a,b,c) の組を求めよ。

追記:
今回は変数が正の自然数3つだけですが、
もしも変数が a,b,c,d,e と5つになった場合でも同じ手法で解けますか?