في الآونة الأخيرة ، أثير سؤال على
محمصة الخبز ، والتي أثرت لي بجدية. إنها متجذرة في مهمة سأعطيها هنا بتفسير مختلف قليلاً:
بمجرد أن يجتاز المبرمجون المشروع في الوقت المحدد ويحصلون على جوائز. للاحتفال ، ألقوا أنفسهم في مون واشتروا البيرة بكل المال. شربوا كل شيء في نفس اليوم ، وفي BT قرروا الاستمرار ، ولكن لم يعد هناك أموال متبقية. ثم قاموا بتسليم الزجاجات ، وأضافوا تغيير أمس ، ومرة أخرى وضعوا كل شيء في المخزون ، مثل أمس. الشيء نفسه تم في SR و Chet. وفي المال PT كان زجاجة واحدة بالضبط. التفكير - تذكرت سعر زجاجة واحدة ، وكم أخذوا حاويات (كانت الأسعار بدون سنتات) ، ولم يستطع أحد تحديد مقدار المال في الأصل. كان المشروع مكافآت كبيرة وواسعة - لذلك لا يستحق ذلك. ما هو الحد الأدنى للميزانية في PN بحيث تتطور الأحداث بهذه الطريقة؟
التفكير فيها على النحو التالي
المفسدنظرًا لأن الرجال يشترون كل يوم كمية كبيرة من الجعة مثلما سمحت لهم الميزانية الحالية (B ، الميزانية) - فقد تم تكوين ميزانية اليوم التالي (ملحوظة ، next_day_budget) من عائدات عودة الحاويات وتغيير الأمس. هناك متغيران أكثر تعقيدًا من أحد المتغيرات ، لذلك تحولت إلى مراعاة تخفيض الميزانية اليومية (BL ، budget_loss). علاوة على ذلك
حيث P ، السعر هو تكلفة زجاجة بيرة واحدة ؛ R ، العائد هو السعر الفارغ عند الإرجاع ، و N هو عدد الزجاجات المشتراة في اليوم ، مثل ذلك
. ثم يمكننا أن نستنتج ما يلي:
جئت إلى معادلة تبدو في الملخص كما يلي (1):
في محاولة للعثور على نهج دون بحث شامل لحل هذه المعادلات ، قضيت أكثر من ساعة واحدة ، ولكن في النهاية
وجدت حلاً رائعًا حقًا ، ولكن هوامش الكتاب ضيقة جدًا ؛)
بدون أوهام حول التفوق في هذا الأمر ، أريد فقط أن أشارك المتعة التي تلقتها في هذه العملية. إذا كان أي شخص يعرف طريقة أو اسمًا بديلاً لهذا ، أنورني ؛ إنني أحث من هم مثلي على المناقشة ، و الصبر ، أدعوك تحت القط.
النظر في المعادلة الناتجة في هذا الشكل (2):
بما أن الجانب الأيمن يمكن أن يأخذ قيمًا صحيحة فقط ، فإن التعبير بأكمله يكون منطقيًا فقط عندما يكون البسط مضاعفًا للمقام في الجانب الأيسر. من هذا يتضح أن
x يمكن أن يكون لها قيم تبدأ من
c ثم بخطوة
a .
ثم اعتبرت المعادلة (1) دالتين
و
. في أي حجة تتقاطع ، هذا هو الحل. على سبيل المثال ، اخترت قيمًا صغيرة للمعلمات بطريقة تعرض الصورة بأفضل طريقة ممكنة. لذا ، دع = 3 ،
ب = 7 ،
ج = 9.
نظرًا للطبيعة التدريجية للدالة الثانية ، يتقاطع الرسمان البيانيان
y1 و
y2 عند نقطتين: بالنسبة إلى
x1 = 12 و
x2 = 15 ، ولكن وفقًا للحالة ، نحن مهتمون بالقيمة الأولى ، مثل القيمة الأصغر. لذا ، من أجل تحديد منطقة التقاطع بدون بحث شامل ، قدمت دالة ثالثة - إنها مجرد خط مستقيم يحد من الوظيفة
y2 من الأسفل ولها المعادلة
.
الآن يبقى العثور على نقطة تقاطع الخطين (
y1 و
y3 ) وضبط الإجابة من التقييد على
x المطلوب. في الواقع ، على أساس الشرط ، يمكن أن يأخذ فقط تلك القيم التي تتحقق عندها حالة مضاعف البسط في المعادلة (2) ،
حيث
n عامل طبيعي معين. للقيام بذلك ، نحل معادلة بسيطة
وإذا كان الجذر الناتج لا يفي بمتطلباتنا ، فسننقله إلى أقرب واحد مناسب. نظرًا لأن الوظيفة المساعدة
y3 لها ميل إيجابي ، وجميع قيم
y2 فوقها ، يجب تعديل الجذر دائمًا لأعلى. لذا ، في حالتنا ، تتقاطع الخطوط عند
x = 11.25 (نقطة سوداء على الرسم البياني) ، وأقرب قيمة كبيرة تحقق الشرط هي 12 (نقطة حمراء) ، وهي الإجابة.
نظرًا لوجود علامة Python في السؤال على محمصة الخبز ، سأقدم أدناه برنامجًا نصيًا لحل هذه المشكلة باستخدام الوظيفة ، للعثور على ميزانية اليوم الحالي بناءً على ميزانية اليوم التالي. نقوم بتطبيق الوظيفة على العدد المطلوب من المرات ، وفويلا ، نحصل على الجواب!
def this_day_budget(next_day_budget): a = bottle_price - tare_return_price b = bottle_price c = next_day_budget x = (a - a*b + b*c)/(b - a) if (x - c) % a:
بدلاً من الاستنتاج:تم تحديد المهمة في هذا المثال كقيم معلمات
والمعادلة نفسها
؛ النهج المقترح مع التغييرات الطفيفة قابل للتطبيق في حالات أخرى مماثلة - الغرض من المنشور كان فقط لوصف المبدأ دون استنتاج حل شامل للحالة العامة - لذلك ، لا تحكم بدقة (كود Python ، مدفوع) ، ويكون يوم الجمعة لطيفة!