بیتنا: فردا آغاز سومین دوره مسابقات برنامه نویسی بیان

رقابت های علمی برنامه نویسی، یکی از عوامل مهم در رشد و تعالی برنامه نویسان است. بیان نیز با برگزاری مسابقات برنامه نویسی در سطح جهانی، تلاش می کند تا بستری مناسب برای ارتقای دانش فنی، مهارت و خلاقیت برنامه نویسان ایرانی فراهم آورد. در مسابقات بیان، برای استفاده از تکنولوژی‌ها و زبان‌های برنامه نویسی هیچ محدودیتی وجود ندارد و مخاطب این رویداد تمامی کسانی هستند که توانایی برنامه نویسی دارند. سومین دوره مسابقات برنامه نویسی بیان نیز به صورت بین المللی و به صورت انفرادی در 5 مرحله برگزار می شود که به جز مرحله فینال نهایی، سایر مراحل به صورت برخط اجرا می شود.
مرحله‌ی ورودی، به عنوان اوّلین مرحله‌ی رسمی این دوره از مسابقات برنامه‌نویسی بیان، از ساعت 9:30 پنج‌شنبه 17 مهر آغاز شده و به مدّت 72 ساعت در جریان خواهد بود. حلّ یک سؤال جهت راهیابی به مرحله‌ی بعدی از مسابقات کافیست.
مسابقات این دوره بیان با استقبال چشمگیر برنامه نویسان سایر کشور ها روبرو شده است و تا این لحظه برنامه نویسانی از 93 کشور ثبت نام کرده اند.
در دومین مسابقه تمرینی غیر رسمی بیان 4700 نفر شرکت داشتند که به ترتیب برنامه نویسانی از چین، ژاپن، روسیه، ویتنام و آمریکا بیشترین امتیاز را کسب کردند.
در اولین مسابقه تمرینی غیررسمی بیان، کازوهیرو هوساکا از کشور ژاپن به مقام نخست دست یافت.
20 شرکت کننده برتر از 20 کشور جهان برای شرکت در فینال مسابقات به تهران دعوت خواهند شد تا با برنامه نویسان برتر ایرانی به رقابت بپردازند.
 

و خبر خوش اینکه هنوز هم فرصت باقی است تا در این مسابقات ثبت نام کنید. شرکت در این مسابقات رایگان است و به راحتی می توانید با مراجعه به وبسایت سومین دوره مسابقات برنامه نویسی بیان در این مسابقات شرکت کنید.

 

دو نمونه سئوال ساده و متوسط بخش تمرینی غیر رسمی سومین دوره مسابقات برنامه نویسی بیان:

1- رمز ورود

شما می‌خواهید به یک فرم ثبت نام آنلاین قابلیتی اضافه کنید که به کاربر سطح امنیت رمز ورود‌ای که انتخاب کرده است را بگوید. یک رمز ورود (Password) ‍دنباله‌ای از حروف لاتین کوچک و بزرگ، ارقام و کاراکتر‌های !@#$%^&*() می‌باشد. برای سنجش امنیت یک رمز ورود به هرکدام از شرایط زیر یک امتیاز مثبت می‌دهیم:

رمز ورود شامل حداقل یک کاراکتر عددی باشد.
رمز ورود شامل حداقل یک کاراکتر از حروف لاتین باشد.
رمز ورود شامل حداقل یک کاراکتر غیر از ارقام و حروف لاتین باشد.
طول رمز ورود حداقل شش کاراکتر باشد.
طول رمز ورود بیش‌تر از ده کاراکتر باشد.
در رمز ورود هم از حروف کوچک و هم از حروف بزرگ الفبای لاتین استفاده شده باشد.
همه‌ی حروف رمز ورود متمایز باشند (حالات بزرگ و کوچک یک حرف لاتین دو حرف مجزا محسوب می‌شوند).

یک رمز ورود ضعیف است اگر کمتر از چهار امتیاز داشته باشد. رمز ورودی که حداقل شش امتیاز داشته‌باشد، قوی‌ است و در غیر این صورت، رمز ورود معمولی خواهد بود.

شما باید برنامه‌ای بنویسید که با دریافت تعدادی رمز ورود، سطح امنیت آن‌ها را مشخص کند.

ورودی

در سطر اول ورودی عدد صحیح T، تعداد تست‌ها آمده‌است. پیش از هر تست، یک خط خالی آمده‌است. برای هر تست در یک سطر رمز ورود را بخوانید.

1≤T≤100
رمز ورود از حروف a تا z و A‌ تا Z و 0 تا 9 و !@#$%^&*() تشکیل شده‌است.
طول رمز ورود حداقل یک و حداکثر پانزده کاراکتر می‌باشد.

خروجی

به ازای هر تست، ابتدا یک سطر شامل Case #x: بنویسید، که در آن x نشان‌دهنده‌ی شماره‌ی تست است، با شروع از 1. در سطر بعد، در صورت ضعیف بودن رمز ورودی عبارت weak، در صورت معمولی بودن عبارت normal و در صورت قوی بودن آن عبارت strong را بنویسید.

ورودی نمونه:

4

qwerty

%normal%pass%

!hElLo123!

!hElLo123*

خروجی نمونه:

Case #1:

weak

Case #2:

normal

Case #3:

normal

Case #4:

strong

2- آنتن ها

کشوری a+b شهر دارد که در یک راستا و با فاصله‌های یکسان از هم واقع شده‌اند. در این کشور دو اپراتور بزرگ تلفن همراه فعالیت می‌کنند. اپراتور اول می‌خواهد در a‌ شهر آنتن نصب کند و اپراتور دوم در b‌ شهر دیگر آنتن‌هایش را نصب خواهد کرد. برقراری ارتباط بین دو شهر در صورتی که شرکت اپراتور هر دو یکسان باشد، رایگان می‌باشد. در غیر این صورت، ارتباط هزینه‌ای برابر با تعداد شهر‌های بین دو شهر مبدا و مقصد خواهد داشت. دو اپراتور در اقدامی مشترک تصمیم گرفته‌اند آنتن‌هایشان را به گونه‌ای نصب کنند که هزینه‌ی ارائه خدماتشان کمینه (کمترین مقدار ممکن) شود. هزینه‌‌ی کل ارائه‌ی خدمات، برابر با مجموع هزینه‌ی برقراری ارتباط بین هر دو شهر مختلف می‌باشد. به عبارتی دیگر، هزینه‌ی برقراری ارتباط بین هر دو شهر محاسبه می‌شود و اپراتور‌ها سعی در کمینه کردن مجموع این اعداد دارند. با توجه به تعریف هزینه‌ها، اپراتور‌ها می‌خواهند برای هر دو شهری که اپراتورشان متفاوت می‌باشد تعداد شهر‌های بین آن‌ها را حساب کنند، و حالتی را بیابند که مجموع این هزینه‌ها کمینه شود. شما علاوه بر محاسبه‌ی مقدار کمینه‌ی هزینه‌ی ارائه خدمات، باید تعداد روش‌های متفاوت نصب آنتن‌ها که در آن هزینه‌ی کمینه حاصل می‌شود را نیز محاسبه کنید. دو روش نصب آنتن‌ها را وقتی متفاوت در نظر می‌گیریم، که شهری وجود داشته باشد که شرکت اپراتورش در این دو روش متفاوت باشد، یعنی در یک روش تحت نظر اپراتور اول و در روش دیگر تحت نظر اپراتور دوم باشد. از آنجا که تعداد حالات چینش با هزینه‌ی کمینه می‌تواند عددی بزرگ شود، باقیمانده‌ی تقسیم آن را بر 10​9​​+7‌ حساب کنید.

ورودی

در سطر اول ورودی عدد صحیح T، تعداد تست‌ها آمده‌است. پیش از هر تست، یک خط خالی آمده‌است. برای هر تست در یک سطر ورودی اعداد a و b، تعداد آنتن‌هایی که هر اپراتور می‌خواهد نصب کند را بخوانید.

1≤T≤100
0≤a,b≤10​6​​
1≤a+b

خروجی

به ازای هر تست، ابتدا یک سطر شامل Case #x: بنویسید، که در آن x نشان‌دهنده‌ی شماره‌ی تست است، با شروع از 1. در سطر بعد دو عدد بنویسید که به ترتیب نشان‌دهنده‌ی کمترین هزینه‌ی مجموع و تعداد روش‌های آن است.

ورودی نمونه

4

3 1

4 1

3 2

4 2

خروجی نمونه:

Case #1:

1 2

Case #2:

2 1

Case #3:

4 1

Case #4:

8 4

در صورتیکه توان لازم برای حل سئوالات این چنینی را در خود می بینید بهتر است تا فرصت باقی است در این مسابقات ثبت نام کنید.

برای کسب اطلاعات بیشتر به پایگاه اینترنتی سومین دوره مسابقات برنامه نویسی بیان مراجعه نمائید.