حل تمرین جشن هدیهها کوئرا با پایتون
در این نوشته به روش حل یکی از سوالات برنامه نویسی وبسایت کوئرا میپردازیم.
حل تمرین جشن هدیهها کوئرا با پایتون
زانا سالی یک بار یک جشن خاص برگزار میکند و تعدادی از دوستانش را به این جشن دعوت میکند. اسم این جشن «جشن هدیهها» است! هر فردی که در این جشن شرکت میکند مقداری پول به همراه خود دارد و به تعدادی از دوستانش هدیه میدهد. روش هدیه دادن در این جشن کمی عجیب است! هر کدام از افراد یک لیست هدیه دارد که در آن لیست، نام تعدادی از دوستانش که در جشن شرکت کردهاند نوشته شده است و تمام پولی که همراه دارد را بین افراد این لیست به طور مساوی تقسیم میکند و این پول را به آنها هدیه میدهد! چون پول اعشاری (کوچکتر از یک) نداریم، این تقسیمها تقسیم صحیح هستند و اگر تقسیم پول بین اعضای لیست باقیماندهای داشته، فرد هدیه دهنده این باقیمانده را برای خود نگه میدارد. به طور مثال اگر ساینا 11 واحد پول داشته و در لیست او فقط سه نفر قرار گرفتهاند، به هر کدام از آنها 3 واحد پول میدهد و 2 واحد از پول خود را برای خود نگه میدارد. حال شما برنامهای بنویسید که پس از گرفتن اسامی شرکت کنندگان، مقدار پول اولیهی هر کدام و لیست هدیه هر کس، مشخص کند که هرکسی چقدر سود یا زیان کرده است!
ورودی
- خط 1: عدد n که برابر است با تعداد شرکت کنندگان در جشن.
- خط 2 تا n+1: در هر خط اسم یکی از شرکت کنندگان.
- خط n+1 الی آخر: از این خط به بعد ورودی به n دسته تقسیم میشود که هرکدام مطابق زیر است: خط اول نام فردی که قرار است هدیه بدهد. در خط دوم دو عدد میآید: عدد اول مقدار پول آن فرد، عدد دوم (k) تعداد افراد موجود در لیست هدیهی آن فرد در k خط بعدی در هر خط نام یکی از افراد موجود در لیست هدیهی آن فرد.
میتوانید فرض کنید نام هر دو نفر از افراد شرکتکننده در جشن متمایز است و:
خروجی
در خروجی باید n خط چاپ کنید که در هر ابتدای هر خط نام هر شخص و بعد از آن مقدار سود او آورده شود. (اگر آن شخص ضرر کرده است، باید منفی مقدار ضرر چاپ شود.) ترتیب نامها در خروجی باید مانند ترتیب نامها در خطوط 2 تا n+1 ورودی شود.
مثال
ورودی نمونه
5 dave laura owen vick amr dave 200 3 laura owen vick owen 500 1 dave amr 150 2 vick owen laura 0 2 amr vick vick 0 0
خروجی نمونه
dave 302 laura 66 owen -359 vick 141 amr -150
کد پایتون سوال تمرین جشن هدیهها
tedad = int(input()) dict = {} for names in range(tedad): dict[input()] = 0 for i in range(tedad): a = input() total, k = map(int, input().split()) if k != 0: pool_a = total % k nahaee = total - pool_a dict[a] += -(nahaee) else: dict[a] += total if k != 0: pool_taghsim = total // k for name in range(k): b = input() dict[b] += pool_taghsim for key, val in dict.items(): print(key, val)
منبع سوال: کوئرا
اگر نیاز به حل تمرینهای دیگری از کوئرا دارید در بخش نظرات همین نوشته برای ما بنویسید.
ارسال پاسخ