حل تمرین جعبه شکلات کوئرا با پایتون
در این نوشته به روش حل یکی از سوالات برنامه نویسی وبسایت کوئرا میپردازیم.
حل تمرین جعبه شکلات کوئرا با پایتون
استاد و k شاگردش بـه مـغازه شکلات فـروشی سـر کوچه که n جـعبه شکلات دارد میرونـد. جعبه شـکلات iام ai شکلات دارد و ci تومان قیمت دارد. استاد و شاگردانش در صورتی حین خوردن یک جعبه شکلات دعوایشان نمیشود که 2 شرط زیر برقرار شود:
شاگردها همه به تعداد برابر شکلات بخورند و استاد دقيقاً 1 شکلات از شاگردها بيشتر. همه حداقل 1 شکلات بخورند. دقت کنید که شکلاتها بین افراد افراز میشود (یعنی همهی شکلاتها پخش میشود و یک شکلات را 2 نــفر نمیخورند). اسـتاد v تومان پـول دارد و بـا پـولـش میخواهد بیشترین تعداد جعبه شکلات را بخرد به طوری که حین خوردن هیچ کدام از جعبه شکلاتها بـینشان دعوا نشود (دقت کنید، ابتدا یک جعبه شکلات را بین خود تقسیم میکنند و میخوردند و سپس جعبه بعدی را باز میکنند). حال استاد از شما میخواهد تا بگویید حداکثر چند جعبه شکلات میتواند بخرد.
ورودی
در سطر اول به ترتيب سه عدد k، v و n و در سطر بعدی n عدد میآید که iامين آنها ai است و درسطر بعدی عدد میآید که iامین آنها ci است.
خروجی
تعداد حداکثر جعبه شکلاتی که میتوانند بخرند و با خوردنش بینشان دعوت نشود.
مثال
ورودی نمونه 1
3 10 5 5 9 10 4 14 1 10 2 1 3
خروجی نمونه 1
1
جعبههای اول و دوم را میتوان بخرد به طوری کـه حین خـوردن شکلاتهایش بـینشان دعـوا نشود و با پولی که دارد از میان این 2 حداکثر یکی را میتواند بخرد.
کد پایتون سوال تمرین جعبه شکلات
s = input() s = s.split() for i in range(0, len(s)): s[i] = int(s[i]) k, v, n = s[0], s[1], s[2] a = input() a = a.split() for i in range(0, len(a)): a[i] = int(a[i]) c = input() c = c.split() for i in range(0, len(c)): c[i] = int(c[i]) boxes = [] count = 0 for i in range(n): if c[i] <= v and a[i] >= k + 1 and a[i] % (k + 1) == 1: boxes.append(c[i]) boxes.sort() for i in range(len(boxes)): if v >= boxes[i]: v = v - boxes[i] count = count + 1 else: break print(count)
منبع سوال: کوئرا
اگر نیاز به حل تمرینهای دیگری از کوئرا دارید در بخش نظرات همین نوشته برای ما بنویسید.
ارسال پاسخ