زانا سالی یک بار یک جشن خاص برگزار میکند و تعدادی از دوستانش را به این جشن دعوت میکند. اسم این جشن «جشن هدیهها» است! هر فردی که در این جشن شرکت میکند مقداری پول به همراه خود دارد و به تعدادی از دوستانش هدیه میدهد. روش هدیه دادن در این جشن کمی عجیب است! هر کدام از افراد یک لیست هدیه دارد که در آن لیست، نام تعدادی از دوستانش که در جشن شرکت کردهاند نوشته شده است و تمام پولی که همراه دارد را بین افراد این لیست به طور مساوی تقسیم میکند و این پول را به آنها هدیه میدهد! چون پول اعشاری (کوچکتر از یک) نداریم ، این تقسیمها تقسیم صحیح هستند و اگر تقسیم پول بین اعضای لیست باقیماندهای داشته باشد ، فرد هدیه دهنده این باقیمانده را برای خود نگه میدارد. به طور مثال اگر ساینا ۱۱ واحد پول داشته باشد و در لیست او فقط سه نفر باشند ، به هر کدام از آنها ۳ واحد پول میدهد و ۲ واحد از پول خود را برای خود نگه میدارد.
حال شما برنامهای بنویسید که پس از گرفتن اسامی شرکت کنندگان، مقدار پول اولیهی هر کدام و لیست هدیه هر کس، مشخص کند که هرکسی چقدر سود یا زیان کرده است!
n
که برابر است با تعداد شرکت کنندگان در جشن.n+1
: در هر خط اسم یکی از شرکت کنندگان.n+1
الی آخر : از این خط به بعد ورودی به n
دسته تقسیم میشود که هرکدام مطابق زیر است: خط اول نام فردی که قرار است هدیه بدهد.
در خط دوم دو عدد میآید: عدد اول مقدار پول آن فرد، عدد دوم (k)
تعداد افراد موجود در لیست هدیهی آن فرد در k
خط بعدی در هر خط نام یکی از افراد موجود در لیست هدیهی آن فرد.میتوانید فرض کنید نام هر دو نفر از افراد شرکتکننده در جشن متمایز است و
در خروجی باید n
خط چاپ کنید که در هر ابتدای هر خط نام هر شخص و بعد از آن مقدار سود او آورده شود. (اگر آن شخص ضرر کرده است، باید منفی مقدار ضرر چاپ شود.) ترتیب نامها در خروجی باید مانند ترتیب نامها در خطوط 2
تا n+1
ورودی باشد.
برنامهای بنویسید که به ترتیب دو عدد و را از کاربر بگیرد و حاصل مقدار زیر را به دست آورد:
در خط اول عدد و در خط بعد عدد به شما داده میشود.
حاصل عبارت را در تنها خط خروجی چاپ کنید.
چندی پیش سازمان اطلاعاتی جمهوری کره(ساجک) اعلام کرد با همکاری SSIS(Sharif Security Intelligence Service
سازمان اطلاعات امنیت شریف، سیستم انتقال پیام ETA
(گروهک تروریستی باسکی) را رمزگشایی کرده است. سیستم انتقال اطلاعات در این شبکه به طرز قابل تحسینی تر و تمیز و شگفت آور بود.
این گروه براي انتقال یک متن، پس از انتقال خود کلمات پیام (که شیوه ي آن در این مسئله بررسی نمی شود)، ترتیب و جایگشت آن ها را تبدیل به یک رشته ي باینري می کرد که در عملیاتی ترین شرایط هم به سادگی قابل انتقال بود. (در آخرین مورد درگیري، جاسوس محاصره شده با دنباله اي از شلیک کردن/ نکردن با تفنگ خالیش، لو
رفتن عملیات را به اعضاي گروهک خبر داد) در حقیقت، رشته ي باینري حاوي اطلاعات فرایند مرتب سازي ادغامی بر روي جایگشت اولیه و اصلی کلمات بود که در نهایت کلمات را به حالت مرتب شده در می آورد. گیرنده ي پیام، باید با مهندسی معکوس جایگشت اولیه از کلمات که در حقیقت اصل پیغام بوده را بازیابی می کرد. نحوه ي تولید رشته در شبه کد زیر توضیح داده شده است:
فرستنده در ابتدا تابع mergeSort
را روي کل آرایه ي رشته ها (که همان متن اصلیست) صدا می زد و در نهایت با کد بالا، رشتهي دودویی مورد نظر تولید و آماده ي ارسال می گردد. کد رمزنگار رشته ها را هم با شیوه ي خاصی مقایسه و نهایتا مرتب می کرد. به این ترتیب که اگر یکی از رشته ها شامل زیررشتهmoji
بود، زود تر از رشته ي دیگر می آید. کوچکی و بزرگی حروف مهم نیست؛ MojI
یا mOJI
هم همین طور هستند (کسی هنوز معناي دقیق این کلمه ي محلی را نمی داند!). اگر هر دو رشته این زیر دنباله را داشتند یا هر دو نداشتند رشته ها معمولی (lexicographically)
مقایسه می شوند؛ به همان سیستمی که در لغتنامه ها لغت ها را مرتب می کنند. سازمان امنیت اطلاعات دانشگاه، بعد از رسانه اي کردن این موضوع براي بازیابی اطلاعات آرشیو شده از مکالمات رمزي این گروه، از شما یک برنامه ي رمزگشایی تقاضا کرده. شما باید با دریافت یک پیام رمزنگاري شده، اصل متن را بازیابی کنید.
در ورودی ابتدا عدد n
تعداد رشته ها ، و سپس به همین تعداد رشته، و سپس رشتهی دودویی که باید رمزگشایی شود میآید. رشتهها شامل حروف کوچک و بزرگ انگلیسی هستند و تعداد آنها حداکثر ۱۰۰۰۰۰ تاست.
در خروجی باید کلمات متن اصلی را هرکدام در یک خط چاپ کنید.
شما بایستی از الگوریتم برای حل مسئله راهبندان استفاده کنید.
در این مسئله، یک خودروی قرمز رنگ به همراه چند خودروی دیگر در یک پارکینگ مشابه شکل پارک شدهاند. میخواهیم با جابجا کردن خودروها، برای خودروی قرمز رنگ که بین سایر خودروها گرفتار شده است، راهی باز کرده و آن را از پارکینگ خارج نماییم. همهی خودروها در این پارکینگ به صورت افقی و عمودی پارک شدهاند. از آنجایی که اکنون امکان دور زدن وجود ندارد، خودروهایی که به صورت افقی قرار دارند تنها میتوانند به چپ و راست حرکت کرده و خودروهای عمودی نیز فقط امکان بالا و پایین رفتن دارند.
هدف این است که با کمترین تعداد حرکت، خودروی قرمز رنگ را که همواره به صورت افقی و روبروی درب خروجی (که در ضلع شرقی پارکینگ قرار دارد) پارک شده است، از پارکینگ خارج نماییم.
در هر حرکت، یک خودرو میتواند در راستایی که قرار دارد به هر تعداد خانه دلخواه جابجا شود، مشروط بر اینکه با سایر خودروها و یا دیوار برخورد نکند. همچنین خارج کردن خودروهای دیگر به جز خودروی قرمز رنگ از پارکینگ مجاز نمیباشد.
ورودی شامل مشخصات پارکینگ و خودروهای پارک شده در آن به همراه موقعیت خودروی قرمز رنگ است. خط اول ورودی عدد است که تعداد پارکینگها را مشخص میکند. پس از آن مشخصات پارکینگ به صورت پشت سر هم در ورودی میآید. برای هر پارکینگ، در خط اول سه عدد ، و قرار دارد که به ترتیب تعداد سطرها و ستونهای پارکینگ و تعداد خودروهای درون آن (شامل خودروی قرمز رنگ) را مشخص میکند. خط بعدی هر یک مشخصات یک خودرو را نشان میدهد. در هر خط، ابتدا دو عدد و قرار دارند که به ترتیب سطر و ستون قسمت بالا و سمت چپ خودرو را مشخص میکنند. در ادامه راستای خودرو با یک کاراکتر برای افقی و یا برای عمودی مشخص میشود. در انتهای خط نیز عدد طول خودرو را نشان میدهد.
لازم به ذکر است که خانه بالای سمت چپ در سطر ١ و ستون ١ قرار داشته و خانه پایین سمت راست در سطر و ستون قرار دارد. ضمناً اولین خط از لیست مشخصات خودروها متعلق به خودروی قرمز رنگ است. نمونه ورودی متناسب با شکل در زیر آمده است.
به ازای هر پارکینگ، برنامه باید کمترین تعداد حرکات که منجر به خروج خودروی قرمز رنگ از پارکینگ میشود را چاپ کند. نمونه خروجی برای شکل در زیر آمده است.
بیژن و منیژه که در مهدکودک شریف همکلاساند، یک بازی ساختهاند بدین صورت:
برای یک کران پایین و یک کران بالا و برای هم یک کران پایین و یک کران بالا تعیین میکنند، سپس هر کدام اعدادی برای تعیین میکنند. بازیکنی که به ازای اعداد انتخابیاش تعداد جواب بیشتری برای معادله به دست آمد، برنده است و دیگری باید مشقهایش را بنویسد!
جوابهای معادلهی بالا زوج مرتبهای هستند که و عدد صحیح هستند و و برنامهای بنویسید تا به آنها کمک کند برنده را مشخص کنند.
در خط اول به ترتیب و و و داده میشود (این اعداد میتوانند صحیح یا اعشاری باشند)، در خط دوم و و که بیژن تعیین میکند و در خط سوم و و که منیژه تعیین میکند داده میشود.
تمام اعداد ورودی از ۱۰۰۰ کوچکترند.
در خط اول تعداد جوابهایی که بیژن به دست میآورد، در خط دوم تعداد جوابهایی که منیژه به دست میآورد ، در خط سوم اگر تعداد جوابها مساوی بود Tie
اگر بیژن برنده شده بود bizhan won
و اگر منیژه برنده شده بود manizhe won
چاپ شود.
شما عدد صحیح مثبت و نیز عدد صحیح نامنفی را در اختیار دارید ، وظیفه شما یافتن کوچکترین و بزرگترین عددی است که دارای طول و مجموع ارقام s باشد ، اعداد مورد نیاز باید صحیح ، غیر منفی ، در مبنای ۱۰ و با صفر آغاز نشود.
ورودی در یک خط دو عدد و که به صورت زیر هستند به شما داده میشود.
در خروجی دو عدد صحیح غیرمنفی در یک خط چاپ میشود که به ترتیب کوچکترین عدد موجود و بزرگترین عدد موجود میباشد. اگر هیچ عددی با توجه به شرایط مطلبوب وجود نداشت خروجی باید به شکل باشد.
برنامهای بنویسید که 2 عدد صحیح و را از ورودی گرفته و عدد را به مبنای ببرد.
عدد حاصل را مینامیم. در عدد سمتچپترین رقم(باارزشترین رقم) را در نظر گرفته و با شروع از این رقم، ارقام عدد را یک درمیان جمع میکنیم و مجموع را برابر قرار میدهیم. مجموع بقیه ارقام را مینامیم. اگر برابر با بود در غیراینصورت چاپ کنید.
در یک خط اعداد و به شما داده میشود.
پاسخ را در یک خط چاپ کنید.
مثلث شکل زیر به مثلث خیام-پاسکال مشهور است. هر عضو این مثلث برابر با مجموع دو عضو بالایی آن در سطر بالاست؛ به عنوان مثال، در سطر چهارم، عدد 3 از مجموع اعداد 1 و 2 در سطر بالایی به دست آمده است.
برنامهای بنویسید که یک عدد صحیح از ورودی گرفته و مثلث خیام را تا آن سطر تشکیل دهد.
در یک خط عدد به شما داده میشود.
مثلث خیام را مانند خروجی نمونه چاپ کنید.
حالا که وقت فرزاد بیشتر است، او می تواند بیشتر برای پروژه وقت بگذارد. از این رو فرزاد به دانیال گفت که در روز شنبه به مکان همیشگی خود بروند و بر روی صورت پروژه کار کنند. آنها در زمان ذکر شده به محل قرار آمدند و شروع به کار بر روی صورت پروژه کردند. اما طبق معمول سر اینکه کدام یک زمین بازی را درست کنند بین آنها دعوایی پیش آمد. بلاخره پس از مشاجره های طولانی، بازی زیر را اختراع کردند:
در این بازی هر کدام از آنها یک ماتریس مربعی انتخاب میکنند. سپس دو ماتریس انتخابی را در هم ضرب کرده، در صورتی که دترمینان ماتریس حاصل فرد بود، دانیال و در غیر این صورت فرزاد باید زمین بازی را درست کند. برنامهای بنویسید که سرعت آنها را در بازی بالا ببرد.
در اولین خط ورودی ابعاد ماتریس های ورودی و در ادامه دو ماتریس گرفته میشود. طول ماتریس ها از ۱۰ کوچکتر است.
پس از انجام محاسبات، در خروجی یکی از دو کلمه ی یا نمایش داده میشود.
شکل زیر، یک حلزون مختصاتی را نشان میدهد. هر حلزون مختصاتی با اندازهی از شمارهی یک در مرکز مختصات شروع میشود و طبق تصویر زیر طی مسیر میکند.
می خواهیم برنامهای بنویسید که عدد را از کاربر دریافت کند و سپس مختصات آن نقطه را به کاربر تحویل دهد.
در یک خط عدد به شما داده میشود.
در تنها خط خروجی مختصات را جدا شده با فاصله چاپ کنید.
توضیح:
شمارهی یک در مبدأ مختصات قرار میگیرد و شماره دو در نقطهی (1,0)
و شمارهی سه در نقطهی (1,1)
و به همین ترتیب پیشمیرود تا درنهایت، نقطهی 14 در (3-,4)
قرار میگیرد.
مسئلهای به شما داده شده است که بایستی به صورت یک مسئله آن را فرموله کرده و پیادهسازی نمایید. فرض کنید گرافی در اختیار داریم که گرههای آن میتوانند هر یک از اشکال مثلث، مربع، پنج ضلعی، شش ضلعی و یا دایره باشند. میخواهیم به هر گره از این گراف، یک عدد بین ١ تا ٩ نسبت دهیم به صورتی که شروط زیر برقرار باشند:
شکل یک گراف نمونه با اعداد منتسب شده به هر گره را نشان میدهد. از شما خواسته شده است تا با دریافت مشخصات گراف، اعداد منتسب به گرههای آن را پیدا کنید.
خط اول ورودی عدد است که تعداد تستها را نشان میدهند. خط اول هر تست، شامل اعداد و است که اولی نشان دهنده تعداد گرهها و دومی نشان دهنده تعداد یالهای گراف است.
در خط بعد کاراکتر از بین یکی ͬاز کاراکترهای T
برای مثلث، S
برای مربع، P
برای پنج ضلعی، H
برای شش ضلعی و C
برای دایره، که با یک فاصله از هم جدا شدهاند میآید که کاراکتر ام، شکل گره ام را مشخص میکند (0 ≥ ).
پس از آن، خط به صورت i j
میآید.
که نشان میدهد یالی میان گره ام و گره ام وجود دارد. نمونه ورودی متناظر با شکل در ادامه آمده است.
به ازای هر تست، یک خط خروجی میآید که شامل عدد بین ١ تا ٩ است که با فاصله از هم جدا شده اند و عدد ام، مقدار منتسب به گره ام را نشان میدهد.
حالا که امتحان های میان ترم فرزاد تمام شده است و زمان بیشتری دارد، او به فکر کار افتاده است. پس از جستجوهای فراوان نهایتاً در شرکت دانیال اینا کاری به او داده شد. کار او به این صورت است که به او چند عدد صحیح می دهند که میزان سود یا ضرر شرکت در روزهای متوالی است. (واحد اعداد میلیون تومان است.) او باید بگوید بیشترین سود شرکت چقدر بوده است. مثلاً در روز اول به او این عددها را دادند: .
واضح است که بیشترین سود شرکت در چهارمین روز بوده است، که برابر ۴ میلیون تومان است. چون مجموع اعضای هر زیر آرایه دیگری از این آرایه داده شده، مقداری کوچک تر از ۴ دارد. دقت کنید که اگر همه اعداد، منفی (ضرر) بودند، میزان سود برابر ۰ است. برنامهای بنویسید که فرزاد به وسیله آن بدون محاسبات ذهنی، کار خود را انجام دهد.
در خط اول ورودی تعداد روزهایی که قرار است سود و ضرر و در ادامه آرایهی سود و ضررها در این روزها گرفته میشود.
در خروجی شما باید میزان بیشترین سود را بیان کنید. به ورودی و خروجی نمونه دقت کنید.
توضیح خروجی: بیشترین سود شرکت در روزهای ۷ تا ۱۱ است که مجموع اعداد شماره ۷ تا ۱۱ برابر ۱۶ است.
در کشوری رییس جمهور به این نحو انتخاب میشود:
اگر n
نفر کاندید شده باشند ، ابتدا طی مراسمی با قرعه کشی به هر کاندیدی یک عدد از ۱ تا n
تعلق میگیرد. کاندیدها به ترتیب شمارههایشان، دور میزی مینشینند و یکی در میان با شروع از شمارهی ۲ حذف میشوند.
حالا شما با استفاده از تابع بازگشتی برنامهای بنویسید که شمارهی کاندید پیروز را با گرفتن تعداد کاندیدها از ورودی چاپ کند.
در تنها خط ورودی عدد آمده است.
در تنها خط خروجی شمارهی کاندیدا پیروز را چاپ کنید.
از آنجایی که دترمینان یک ماتریس بسیار مفید و کاربردیست!
برنامهای بنویسید که ابتدا و سپس درایههای یک ماتریس را بگیرد. و با کمک تابع بازگشتی دترمینان ماتریس را محاسبه و با دقت دو رقم اعشار چاپ کند.
در خط اول ورودی عدد آمده است. در خط بعد در هر خط عدد گویا آمده که درایههای ماتریس را مشخص میکنند.( هر درایهی ماتریس عددی گویاست که قدرمطلق آن از ۱۰۰ کمتر است.)
در خروجی دترمینان ماتریس داده شده را تا ۲ رقم اعشار چاپ کنید.
سرانجام هریپاتر توانست طلسم شکست دادن دشمن بزرگ خود مالفوی را ابداع کند! هری یک جفت دستبند قدرت دایرهای ساخته که روی مچ دستهای راست و چپش بسته میشود. او روی هر دستبند دنبالهای از حروف جادویی نوشته است که هر حرف فعال قدرت او را تقریبا به اندازه یک بید کتکزن افزایش میدهد! با این حال یک مشکل وجود دارد. دستبندها فقط زمانی کار میکنند که زیردنباله حروف فعال شده روی هر دو دستبند یکسان باشد. برای مثال در شکل زیر یک جفت دستبند داده شده که حروف دو رشته و به عنوان حروف جادویی روی آنها قرار گرفته است که یک فعالسازی بهینه از این حروف به هری قدرتی به اندازه ۱۴ بید کتکزن میدهد.
روی دستبند اول حروف در جهت ساعتگرد و روی دستبند دوم همین حروف در جهت پادساعتگرد فعال شده است. بطور کلی ترتیب حروف مهم است اما جهت زیر دنباله فعال روی هر دستبند (در جهت عقربههای ساعت یا خلاف جهت) ممکن است یکسان باشد یا نباشد. فراموش نکنید که دستبندها دایرهای هستند! شما باید به هری کمک کنید که تصمیم بگیرد چه زیردنباله بهینهای از حروف روی دستبندهایش را لازم است فعال کند تا بتواند مالفوی را شکست دهد.
فایل ورودی حداکثر شامل ۱۰۰ نمونه ورودی است. (حداکثر شامل ۵ نمونه بزرگ) هر نمونه یک خط شامل یک جفت رشته که با فاصله جدا شده اند و مربوط به همان دنباله حروف روی دستبندهای قدرت چپ و راست هری است (به ترتیب) می باشد و هر رشته تنها از حروف کوچک تشکیل خواهد شد. طول هر رشته ورودی بین تا کاراکتر است به جز در نمونه های بزرگ که طول هر رشته ورودی بین تا کاراکتر می باشد.
حداکثر قدرتی که هری با فعال کردن حروف روی دستبندها می تواند برسد (بر حسب واحد بید کتکزن) را چاپ کنید.
در یک صبح زیبای تابستانی اتفاق وحشتناکی در پردازنده مرکزی افتاد، یک ویروس آب زیرکاه به نام مگابایت به طریقی به حافظه خواهرش به نام هگزادسیمال (که کمتر از او آب زیرکاه نبود) دسترسی پیدا کرد. او برای به دست آوردن کنترل کامل بر خواهرش عدد مختلف طبیعی از ۱ تا را کرد .
ولی نقشه اش با شکست مواجه شد. علتش ساده بود: هگزادسیمال هر اطلاعاتی را درک نمی کرد، بجز اعدادی که در مبنای ۲ نوشته شده اند. یعنی اگر عددی در مبنای ۱۰ شامل رقمی به جز ۰ و ۱ باشد، در حافظه قرار نمی گیرد. اکنون مگابایت میخواهد بداند که چه تعداد از عددها به طور موفقیت آمیز شدهاند .
در یک خط عدد به شما داده میشود.
در یک خط پاسخ مسئله را چاپ کنید.
پس از این که TA سخت گیر، کوییز طاقت فرسایی از دانشجوها گرفت، دانشجوها با یکدیگر دست به یکی کردند تا از او انتقام بگیرند.
بدین منظور بازی ای ترتیب دادند و از TA خواستند که با آن ها بازی کند. در صورت باختن TA باید ۱۰ نمره به همه اضافه و در صورت بردن او ۱۰ نمره از همه کم می شود.
در این بازی دانشجویان یک جدول به همراه تعداد نامحدودی دومینو (موزاییک هایی که هر کدام دو خانه از جدول را میپوشانند.) به TA می دهند و TA باید تعداد روش هایی که می تواند به وسیله ی این دومینو ها، جدول را بپوشاند به دانشجوها تحویل دهد. در صورت درست بودن جواب، TA برنده و در غیر این صورت TA بازنده میشود.
یکی از دانشجوهای زرنگ(!) برنامه ای نوشته است که این تعداد روش ها را محاسبه می کند و آن را به TA داده است. ولی برای این که TA ببازد، در آخر دو برابر جواب اصلی را در خروجی چاپ می کند.
این برنامه را بازنویسی کنید.
در یک خط عدد به شما داده میشود.
در یک خط پاسخ مسئله را چاپ کنید.
مبین خیلی عیدی دوست دارد! در یک مهمانی عمویش به او جدولی داد و گفت « هر چقدر EYDI
در این جدول پیدا کنی به همان تعداد سکه به تو عیدی میدهم».
در هر خانهی جدول یکی از حروف E, Y, D, I
نوشته شده است. روش بازی به صورت زیر است:
مبین در ابتدا در خانه شامل حرف E
است.
خانهای شامل حرف Y
پیدا میکند که مجاور با خانهی قبلی باشد.
خانهای شامل حرف D
پیدا میکند که مجاور با خانهی قبلی باشد.
خانهای شامل حرف I
پیدا میکند که مجاور با خانهی قبلی باشد.
یک سکه به دست میآورد!
خانهای شامل حرف E
پیدا میکند که مجاور با خانهی قبلی باشد. سپس به گام دوم برمیگردد.
اگر انجام هر یک از گامهای بالا ممکن نباشد بازی به پایان میرسد. مبین از شما خواسته برنامهای برای او بنویسید تا به کمک آن بیشترین سکه را به دست بیاورد.
در خط اول ورودی دو عدد n
و m
میآیند که به ترتیب تعداد سطرها و تعداد ستونهای جدول هستند. n
خط بعدی هر کدام شامل m
حرف است، به این صورت که حرف j
ام از i
امین خط ( و ) حرفی است که در خانهی (i,j)
از جدول قرار دارد.
اگر مبین نمیتواند سکهای به دست بیاورد عبارت !Poor Mobin
را چاپ کنید. اگر مبین میتواند نامتناهی سکه به دست بیاورد عبارت !Poor Uncle
را چاپ نمایید. در غیر این صورت حداکثر تعداد سکههایی را بنویسید که مبین میتواند به دست بیاورد.
روزی از روزها، قرار شد که Quera برای رهنما مسابقاتی برگزار کند و از بین شرکت کنندگان تعدادی ستاره برگزیند و به رهنما معرفی کند. یکی از دوستان Quera با شنیدن چنین خبری سریعا به Quera رفت و پیشنهاد جالبی به آنها داد!
او گفت که میتواند تعدادی ستاره به Quera بدهد که دیگر نیازی به برگزاری مسابقه نباشد و Quera نیز طبعاً از این پیشنهاد بسیار استقبال کرد!
پس از گذشت روزها، بالاخره این دوست ستارهها را برای Quera فرستاد، اما این ستارگان با آنچه Quera انتظار داشت بسیار متفاوت بودند. او تعدادی عکس از ستارگان برای Quera فرستاده بود! Quera پس از این اتفاق، خونسردی خود را حفظ کرد و تلاش کرد تهدیدها را تبدیل به فرصتها کند؛ پس چالشی از روی اینها برای شما پدید آورد!
شما باید برنامهای بنویسید که با ورودی گرفتن این عکسها، ستارههای داخل آن را بیابد!
در تستهای این سوال ۸ عکس واقعی از آسمان وجود دارد که هرچه شما تعداد بیشتری ستاره بتوانید در اینها پیدا کنید، نمرهی بیشتری از این سوال میگیرید. به این شکل که در ورودی هر تست پیش از توصیف عکس، یک مقدار آمدهاست که یعنی اگر شما حداقل به تعداد ستاره در عکس بیابید، نمرهی تست را دریافت میکنید. هر عکس سه بار در تستها آمدهاست که مقدار در این سه تست تفاوت دارد.
برنامهی شما باید پس از دریافت عکس (توصیف دقیق فرمت تستها را میتوانید در بخش "ورودی" بیابید) تعداد ستارههایی که پیدا کردهاست را چاپ کند و سپس مختصات حداقل یک نقطه از هریک از این ستارگان را در خروجی بنویسد. سپس سیستم تعداد ستارههایی که برنامهی شما یافته را بررسی میکند. اگر کمتر از ۷۵٪ تعدادی که برنامهی شما ادعا کردهاست ستاره شامل نقاط خروجی شما وجود داشت، برنامهی شما نمرهی آن تست را دریافت نمیکند.
برنامهی شما کافیست ستارگانی را بیابد که با چشم عادی قابل تشخیص و تفکیک از هم هستند. تضمین میشود در ورودیها، اندازهی چنین ستارگانی بزرگتر از دیگر ستارگان باشند و در حقیقت تمایز ستارگان کوچکتر از هم با چشم انسان قابل تشخیص نباشد. برای مثال عکس زیر بخشی از یکی از عکسهای موجود در تستها است:
در این مثال تنها ۵ ستاره وجود دارد که شما باید آنها را بیابید.
یا برای مثال، در عکس زیر (که بازهم بخشی از یکی از عکسهای تستها است) ۱۲ ستاره وجود دارد که شما باید آنها را بیابید:
(ورودی مثال این دو عکس و یک خروجی معتبرشان در نمونههای سوال آمدهاند.)
دقت کنید که لازم نیست تمام ستارگان با شرایط گفتهشده را بیابید؛ شما کافیست به تعداد ستاره با این شرایط پیدا کنید و میتوانید تا تعداد کل ستارگان با شرایط گفته شده نقطه خروجی دهید. تضمین میشود بیش از مقدار در هر تست، ستاره با شرایط گفته شده یافت شود.
جهت تشخیص درست ستارهها، تلاش کنید نقطهای که در ستارهی معرفی شده ارائه میدهید در گوشههای آن نباشد. (بعنوان مثال، میتوانید مرکز ثقل شکل ستاره یافتشده را خروجی دهید!)
در سطر اول ورودی، سه عدد و و آمدهاست که به ترتیب نمایانگر مقدار ارتفاع و عرض عکس ورودی و تعداد ستارههایی که باید یافت شوند هستند.
سپس در سطر بعدی، هر سطر رنگ نقطه از تصویر توصیف شدهاست. توصیف هر نقطه بصورت میباشد که نمایانگر رنگ این نقطه در صورت نمایش بصورت RGB است. توصیف نقاط با فاصله (space) از هم جدا شدهاند.
تضمین میشود در هریک از تستهای داده شده، حداکثر ۵۰ ستاره با شرایط گفته شده وجود دارد.
به ورودیهای نمونه دقت کنید!
در سطر اول خروجی یک عدد چاپ کنید که نمایانگر تعداد ستارههایی است که در عکس یافت شدهاند. سپس در هریک از سطر بعدی، مختصات یکی از نقاط یکی از ستارههای یافت شده را خروجی دهید. هر مختصات باید بصورت باشد که یعنی این نقطه در سطر توصیف عکس در ورودی سوال، نقطهی امی بودهاست که توصیف شدهاست.
ورودی نمونهرا میتوانید در اینجا ببینید.
ورودی نمونهرا میتوانید در اینجا ببینید.