Your Digits
Your Digits
لديك \(k_2\) من الخانات 2، و \(k_3\) من الخانات 3، و \(k_5\) من الخانات 5، و \(k_6\) من الخانات 6. تريد تكوين الأعداد 32 و 256 باستخدام هذه الخانات (كل خانة مرة واحدة على الأكثر) لتعظيم مجموعها الكلي. جد أقصى مجموع ممكن.
Solution
نستطيع ملاحظة أنه من الأفضل تكوين العدد 256 قبل 32. لذا سنقوم بصنع 256 طالما لدينا خانات كافية، ثم باستخدام الخانات المتبقية نصنع 32.
العدد 256 يحتاج الخانات 2، 5، 6 مرة واحدة لكل منها، لذا يمكننا صنع أقصى عدد من هذه الأعداد يساوي \(k = \min(k_2, k_5, k_6)\).
باستخدام الخانات المتبقية، وهي \(k_3\) من الخانات 3 و \(k_2 - k\) من الخانات 2 (بعد استخدام \(k\) منها لصنع 256)، يمكننا تكوين \(\min(k_3, k_2-k)\) من الأعداد 32.
#include<iostream>
using namespace std;
int main () {
int k2, k3, k5, k6;
cin >> k2 >> k3 >> k5 >> k6;
int k = min(min(k2, k5), k6);
int solution = k * 256 + min(k3, k2 - k) * 32;
cout << solution << '\n';
}