امسال $LC$ با هر سال تو 3تا چیز فرق کرده ، یکی اینکه مرحله غیر حضوری داره ، بعد اینکه سطح بندی میشه ، و سوم اینکه ما دوتا انجمن (مهندسی کامپیوتر و مهندسی فناوری اطلاعات) با هم همهکاری کردیم و دوتایی برگزارش کردیم^_^ .
از اونجایی که الان همه با هم داریم مسابقه میدیم و این یه مسابقه برای سطح بندی برنامه نویسامون واسه مرحله حضوری هست ، با چنتا سوال ساده واسه دست گرمی شروع میکنیم :)
(اگه به آموزش کار با quera ، نحوه ی سابمیت کردن کدتون نحوه ی امتیازبندی و ... نیاز دارین ، فایل "دانلود pdf مسابقه" رو بزنین)
چون این اولین سوال مسابقه هست قراره فقط یه $Hello$ به مسابقه بدین و بعدش بریم سراغ بقیه سوالا و شروع مسابقه ^_^.
![عکس پلکانی](http://uupload.ir/files/t85_photo_2017-02-22_23-56-53.jpg)
# ورودی
این سوال ورودی نداره
# خروجی
در خروجی $LC2017$ $Hello$ رو چاپ کنین ( به کوچیک و بزرگ بودن حروف و فاصله ها حساسه ، دقت کنین دقیقا همینجوری بنویسین) .
# مثال
## خروجی
```
Hello LC2017
```
Hello LC2017
+ محدودیت زمان: ۰.۵ ثانیه
+ محدودیت حافظه: ۲۵۶ مگابایت
----------
از اونجایی که استاد خادم حسینی همیشه سر کلاس یه چیزای جدیدی میگن که آدم کلی کف میکنه (اگرم درس نداشتین امیدواریم قسمت شه تجربه کنین :دی) بچه ها هر سری آخر کلاس به اندازه ی چیزای جدیدی که یاد میگیرن ، متعجب میشن. مثلا اگه یه دونه چیزِ جدید یاد بگیرن میگن "!Wow"، اگه دوتا چیز جدید یاد بگیرن میگن "!Woow" و به همین شکل مقدار کشیدن کلمه(تعداد o ها) زیاد میشه. حالا شما باید بگین که اگه یه روز استاد به اندازهی $n$ چیز جدید به شما یاد بده ، آخر کلاس چه کلمه ای رو میگین .
![عکس تعجب](http://uupload.ir/files/3f45_download.jpg)
# ورودی
در تنها سطر ورودی یک عدد طبیعی $n$ به شما داده شده به این معنی که اونروز به اون مقدار چیز جدید یاد گرفتین
$$ 1 \le n \le 100$$
# خروجی
خروجی شامل یک کلمه است، که نشاندهندهی کلمه ایست که شما آخر کلاس بعد از شنیدن چیزای جدید میگین.(به علامت تعجب آخر کلمه و بزرگ بودن اولین حرف کلمه دقت کنین).
# مثال
## ورودی نمونه ۱
```
1
```
## خروجی نمونه ۱
```
Wow!
```
## ورودی نمونه ۲
```
4
```
## خروجی نمونه ۲
```
Woooow!
```
استاد خادم حسینی
## عدد خودمقلوب
برنامهای بنویسید که عدد صحیح `n` را از ورودی دریافت کند و تعیین کند که آیا این عدد خودمقلوب است یا خیر. عدد خودمقلوب به عددی می گویند که اگر آن را برعکس کنیم، باخودش برابر شود.
## مثال
ورودی نمونه ۱
```
2356532
```
خروجی نمونه ۱
```
YES
```
ورودی نمونه ۲
```
7011
```
خروجی نمونه ۲
```
NO
```
عدد خودمقلوب
برنامهای بنویسید که عدد صحیح مثبت $n$ را از کاربر بگیرد و یک لوزی توپر به قطر $2n+1$ چاپ کند.
## مثال
ورودی نمونه
```
3
```
خروجی نمونه
```
*
***
*****
*******
*****
***
*
```
چاپ لوزی
+ محدودیت زمان: ۰.۵ ثانیه
+ محدودیت حافظه: ۲۵۶ مگابایت
----------
کریم یک کودک برنامه نویس ۵ ساله است (!) که به اسم متغیرها خیلی توجه میکند.
کریم یک پدربزرگ دارد که از «واج آرایی» متنفر است. او اسمهایی را دوست دارد که در آنها تعداد حرفهای مختلف زیاد باشد. برای مثال karim پنج حرف مختلف (همهی حرف هایش مختلفند) و abbas سه حرف مختلف دارد. (حرف های a و b و s)
کریم در انتخاب اسم برای یک متغیر در کدش به مشکل خورده و بین $n$ اسم موجود شک دارد. او این اسامی را به پدربزرگش میدهد تا بهترین اسم را برگزیند. میدانیم که پدربزرگ اسمی را انتخاب میکند که بیشترین تعداد حروف مختلف را دارد. با داشتن این اسامی، بگویید که تعداد حروف مختلف در اسم انتخابی پدربزرگ چقدر خواهد بود.
# ورودی
خط اول ورودی شامل عدد $n$ است.
در $n$ خط بعدی هر خط شامل یک اسم پیشنهادی است. هر اسم رشتهای با حداکثر ۲۰ حرف از حروف کوچک انگلیسی میباشد.
# خروجی
در تنها خط خروجی یک عدد چاپ کنید که برابر تعداد حروف مختلف در اسم انتخابی خواهد بود.
# ورودی نمونه
```
4
ali
karim
abbas
mohammad
```
# خروجی نمونه
```
5
```
اسمها
+ محدودیت زمان: ۰.۵ ثانیه
+ محدودیت حافظه: ۲۵۶ مگابایت
----------
بازی $minesweeper$ به این صورت است که از یک جدول $m \times n$ ساخته شده است که بعضی از خانههای آن بمب هستند و سایر خانهها تعداد بمبهایی را که در ۸ خانه مجاور آنها قرار دارد، نشانمیدهند. در این سوال خانههای حاوی بمب به شما داده میشود و برنامهی شما باید جدول را چاپ کند.
# ورودی
در خط اول ورودی دو عدد $n$ و $m$ داده میشود که به ترتیب نشان دهندهی تعداد سطر و ستونهای جدول است. سپس در خط بعد یک عدد $k$ که تعداد بمبهای واقع در جدول را نشان میدهد. در نهایت در هر یک از $k$ خط بعدی در هر خط یک زوج عدد که مکان بمبها را نشان میدهند به عنوان ورودی به برنامه داده میشوند. در هر زوج ابتدا شماره سطر و سپس ستون مربوطه نمایش داده میشود؛ جدول را طوری فرض کنید که ستونهای آن از چپ به راست با اعداد ۱ تا $m$ و سطرهای آن از بالا به پایین با اعداد طبیعی ۱ تا $n$ شمارهگذاری شدهاند.
$$ 1 \le m,n \le 100 $$
$$1 \le k \le n \times m$$
# خروجی
برنامه باید در خروجی یک جدول $m \times n$ را چاپ کند. به این صورت که به ازای بمبها نماد `*` و برای سایر خانههای جدول نیز عدد متناظر با آن را چاپ کنید(عدد متناظر هر خانه ، میشود مجموع تعداد بمب های 8خانه ی مجاورش). بین هر دو عنصر متوالی در یک سطر، یک فاصله ($space$) چاپکنید که آنها را از هم جدا کند.
# مثال
## ورودی نمونه
```
4 3
5
1 1
4 2
1 3
3 2
4 3
```
## خروجی نمونه
```
* 2 *
2 3 2
2 * 3
2 * *
```
بمب بازی
+ محدودیت زمان: ۱ ثانیه
+ محدودیت حافظه: ۲۵۶ مگابایت
----------
_چرزه و پشمک
اخیرا کولههای خود را بستهاند و تصمیم گرفتهاند که دنیا را در ۷۹ روز طی کنند.
اما آنها در طی جهانگردیشان با مسائلی روبهرو میشوند و از شما میخواهند که
آنها را برایشان حل کنید._
![توضیح تصویر](http://s7.picofile.com/file/8282821192/QcQ_P01E_400x400.jpeg)
هنگام ورود به
آمریکا، ماموران سیا آنها را به اتهام
جاسوسی دستگیر کردند و به زندانهای دور بردند. در یکی از روزها (یا شاید شب
ها....) که چرزه و پشمک داشتند میپوسیدند، خبری مهم به آنها رسید و آن این بود
که سازمان سیا، زندانیان سیاسی و امنیتیای را که برنامهی رمزنگاری PES (!!) را پیادهسازی کنند، آزاد میکند. پشمک و چرزه که قاعدتا دوست ندارند که بپوسند و
بمیرند، سعی کردند این رمزنگاری را پیادهسازی کنند اما چون هیچ چیزی از رمزنگاری
نمیدانند، دوباره چشمهایشان به سمت شما بازگشت.
این نوع رمزنگاری
بر روی یک رشته از حروف بزرگ و کوچک انگلیسی اجرا میشود و یک رشتهی جدید را به
این صورت درست میکند:
اگر
رشته ی اولیه $S$ باشد، از اولین حرف رشته از سمت چپ
آغاز میکنیم و جلو میرویم و به ازای هر $S_i$
از رشته، به جای آن، $y$امین حرف انگلیسی را اضافه میکنیم به صورتی که
$$y = (X_i*A_i+1) \;mod\;26$$
در این جا $A_i$
شماره ی حرف در حروف الفبا و $X_i$
تعداد تکرارهای حرف $S_i$
در کل رشته ی $S$
است. در این جا باید به چند نکته توجه کنید:
1.
در صورتی که $S_i$
حرف بزرگ الفبای انگلیسی باشد، حرف جایگزین آن
نیز باید حرف بزرگ الفبا باشد و در غیر این صورت حرف جایگزین باید حرف کوچک الفبای
انگلیسی باشد.
2.
در
شمردن $X_i$
بزرگی و کوچکی حروف تاثیری ندارد.
3.
شمردن
حروف از ۰ شروع میشود و در نتیجه شماره ی حروف $a$ و $A$، ۰ و شماره ی
حروف $z$ و $Z$، ۲۵ می باشد.
4.
$a\;mod\;b$
یعنی باقی ماندهی $a$ بر $b$.
# ورودی
در یک خط یک رشته
ی
متشکل از حروف بزرگ و کوچک الفبای انگلیسی به شما
داده میشود.
$$1 \leq \left | S \right | \leq 300$$
# خروجی
در اولین و آخرین خط
خروجی رشتهی رمز شده را چاپ کنید.
# مثال
## ورودی نمونه ۱
```
CharzE
```
## خروجی نمونه ۱
```
DibsaF
```
## ورودی نمونه ۲
```
Abbaabss
```
## خروجی نمونه ۲
```
Beebbell
```
مسئلهی امنیتی
مجموعههای معمولی که در این سوال به آن ها مجموعههای یک لایه می گوییم، مجموعه هایی هستند که اعضای آنها فقط عدد هستند. در این سوال با مجموعههای چندلایه سر و کار داریم که اعضای آن علاوه بر عدد میتواند مجموعهی دیگری هم باشند که ممکن است در دل آنها نیز مجموعه دیگری باشد.
به بیان دیگر یک محموعه چند لایه مجموعهای است که اعضای آن میتوانند عدد و یا یک مجموعه چند لایه دیگر باشند و یک مجموعه یک لایه مجموعه ایست که اعضای آن فقط عدد هستند و عضو مجموعه ندارد.
(هر مجموعه یک لایه، مجموعه چند لایه هم هست اما هر مجموعه چند لایه مجموعه یک لایه نیست.)
برای جمع یک مجموعه چندلایه به ازای هر مجموعه چندلایه عضو آن، حاصل جمع آن مجموعه چند لایه را قرار میدهیم و این عددها را با سایر اعداد عضو مجموعه جمع می کنیم.
به عنوان ورودی یک مجموعه چندلایه داده میشود. میخواهیم جمع اعضای مجموعه و البته جمع همه اعضای مجموعه های تو در تو آن را به دست آوریم. برای جمع یک مجموعه به این صورت عمل میکنیم که اگر همه اعضای آن عدد بودند، جمع آن عددها را چاپ میکنیم.در غیر این صورت ابتدا این کار را برای همه مجموعه های درون آن(به ترتیب قرار گرفتنشان از سمت چپ به راست) انجام می دهیم و وقتی جمع همه مجموعه های درونش را به دست آوردیم و چاپ کردیم، آنها را با هم و همچنین سایر اعداد عضو مجموعه جمع میکنیم. برای هر مجموعهای که دیده می شود.
میتوانید فرض کنید مجموعه تهی نداریم و اعداد همه نامنفی هستند.
## مثال
ورودی نمونه ۱
```
{1, 2, {3, {4, 5, {6}}, 7}, 8}
```
خروجی نمونه ۱
```
6
15
25
36
```
ورودی نمونه ۲
```
{{12, 23, {4, 0, {1}, {1}}}, 0, {1}}
```
خروجی نمونه ۲
```
1
1
6
41
1
42
```
ورودی نمونه ۳
```
{1, {2, {{6}}}, {{{7}}}}
```
خروجی نمونه ۳
```
6
6
8
7
7
7
16
```
جمع چندلایه
زانا سالی یک بار یک جشن خاص برگزار میکند و تعدادی از دوستانش را به این جشن دعوت میکند. اسم این جشن «جشن هدیهها» است! هر فردی که در این جشن شرکت میکند مقداری پول به همراه خود دارد و به تعدادی از دوستانش هدیه میدهد. روش هدیه دادن در این جشن کمی عجیب است! هر کدام از افراد یک لیست هدیه دارد که در آن لیست، نام تعدادی از دوستانش که در جشن شرکت کردهاند نوشته شده است و تمام پولی که همراه دارد را بین افراد این لیست به طور مساوی تقسیم میکند و این پول را به آنها هدیه میدهد! چون پول اعشاری (کوچکتر از یک) نداریم ، این تقسیمها تقسیم صحیح هستند و اگر تقسیم پول بین اعضای لیست باقیماندهای داشته باشد ، فرد هدیه دهنده این باقیمانده را برای خود نگه میدارد. به طور مثال اگر ساینا ۱۱ واحد پول داشته باشد و در لیست او فقط سه نفر باشند ، به هر کدام از آنها 3 واحد پول میدهد و ۲ واحد از پول خود را برای خود نگه میدارد.
حال شما برنامهای بنویسید که پس از گرفتن اسامی شرکت کنندگان، مقدار پول اولیهی هر کدام و لیست هدیه هر کس، مشخص کند که هرکسی چقدر سود یا زیان کرده است!
## ورودی
+ خط ۱ : عدد `n` که برابر است با تعداد شرکت کنندگان در جشن.
+ خط ۲ تا `n+۱` : در هر خط اسم یکی از شرکت کنندگان.
+ خط `n+۱` الی آخر : از این خط به بعد ورودی به `n` دسته تقسیم میشود که هرکدام مطابق زیر است: خط اول نام فردی که قرار است هدیه بدهد.
در خط دوم دو عدد میآید: عدد اول مقدار پول آن فرد، عدد دوم `(k)` تعداد افراد موجود در لیست هدیهی آن فرد در `k` خط بعدی در هر خط نام یکی از افراد موجود در لیست هدیهی آن فرد.
میتوانید فرض کنید نام هر دو نفر از افراد شرکتکننده در جشن متمایز است و
$$ 2 \leq n \leq 10$$
## خروجی
در خروجی باید `n` خط چاپ کنید که در هر ابتدای هر خط نام هر شخص و بعد از آن مقدار سود او آورده شود. (اگر آن شخص ضرر کرده است، باید منفی مقدار ضرر چاپ شود.) ترتیب نامها در خروجی باید مانند ترتیب نامها در خطوط `۲` تا `n+۱` ورودی باشد.
## مثال
ورودی نمونه
```
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
```
جشن هدیهها
+ محدودیت زمان: 2 ثانیه
+ محدودیت حافظه: 50 مگابایت
----------
یک مجموعه از `n` بادکنک داریم. میخواهیم با کمترین تعداد تیر ممکن که همگی از مبدأ پرتاب میشوند، این بادکنکها را بترکانیم. هر تیری که رها میشود در زاویه پرتاب شده به صورت مستقیم حرکت میکند و قدرت کافی برای ترکاندن تمامی بادکنکهای مسیر را دارد. بادکنکها نیز همگی به شکل دایره هستند و از هر بادکنک مختصات مرکز آن و شعاع را در دست داریم.
تیرها فقط در جهت مثبت محور `x` رها میشوند. اگر دو بادکنک مماس بر یکدیگر باشند، تیر پرتابی به مماس آنها هردوی بادکنکها را میترکاند.
برنامهای بنویسید که با گرفتن تعداد بادکنکها در سطر اول و سپس مختصات مرکز و شعاع، تعداد تیرهای لازم را چاپ کند.
## محدودیتها
$$1 \leq n \leq 10^7 $$
$$-10^4 \leq x,y \leq 10^4 $$
$$ r \leq 50 $$
## ورودی
در خط اول `n` تعداد بادکنکها و در `n` خط بعدی مختصات مرکز و شعاع بادکنکها
## خروجی
تعداد تیرهای لازم برای ترکاندی بادکنکها
## مثال
نمونه ورودی:
```
5
2 2 1.5
3 3 1
1 9 1.2
4 -2 2
3 -5 3
```
نمونه خروجی:
```
3
```
بادکنک ترکانی
## قورباغه احمق:
یک قورباغه در برکهای در حال حرکت است. کمک کنید وضعیت اتفاق افتاده برای قورباغه مشخص شود! برنامهای بنویسید که در خط اول سطر و ستون جدول بازی و در خطوط بعدی به ترتیب نوع هر خانه را سطر به سطر بگیرد. در خطوط بعدی دستورات وارد میشوند. دقت کنید شروع حرکت از خانه صفر و صفر است! یعنی گوشه بالا سمت چپ!
## ورودی
انواع دستورات:
| دستور | توضیح |
|:---------:|:-----------:|
| بالا | Up|
| پایین | Down|
| راست | Right|
| چپ | Left|
| پایان بازی | Finish|
| درخواست موقعیت فعلی قورباغه | Location|
خانه های حرکت قورباغه انواع مختلفی دارد:
+ `E():` انرژی به مقدار داخل پرانتز که می تواند مثبت و یا منفی و ضریب 5 باشد، افزایش خواهد یافت
+ `N:` خانه نرمال
+ `C:` تمساح
+ `J():` جهش به خانه ذکر شده
## قوانین بازی:
+ با ورود به هر خانه، در صورتی که آن خانه نرمال نباشد یکی از جملههای خروجی مربوطه باید چاپ گردد.
+ در صورتی که دستور جهش به خانه بیرون از جدول باشه عبارت "ناممکن" همانند مثال چاپ گردد.
+ قورباغه در دو حالت میمیرد: یکی با انرژی صفر و یکی با شکار توسط تمساح!
+ با تایپ دستور `Finish` بازی تمام شده و انرژی قورباغه چاپ میشود.
## خروجی
انواع جملههای خروجی بدین صورت هستند:
```
Energy 30!
Location (4,0)
Jump to (3,1)
Impossible place!
Frog hunted by crocodile :-/! Energy 25!
Frog died! Energy -10!
```
مثال:
ورودی نمونه
```
5*6
N E(20) j(3,2) N N E(-5)
N N N N N C
C E(10) N N J(0,0) C
N E(5) N N N C
J(2,0) E(-10) N N C N
Right
Right
Left
Left
Left
Up
```
خروجی نمونه
```
Energy 20!
Jump to (3,2)
Enegy 25!
Impossible place!
Frog hunted by crocodile :-/! Energy 25!
```
توضیحات اضافه :
شکل زیر مراحل مثال بالا را نشان میدهد:
![عکس قورباغه](http://uupload.ir/files/ndu3_frog.jpg)
(دقت کنین در مرحله ی دوم که میخواد بپره ، اگه توی خونه ی `(3,2)` دستوری غیر از `N` بود ، اون هم انجام میشد) $$$$
تا زمانی که یا دستور `Finish` بیاد و یا اینکه قورباغه بمیره (که حالا یا انرژی ش کمتر مساوی صفر بشه یا اینکه تمساح بهش حمله کنه) باید از ورودی دستور بگیرین.
$$$$
هر زمانی دستور `Location` گفته شد ،موقعیت فعلی رو چاپ میکنین .
قورباغه احمق
علی بعد از گذراندن درس مبانی برنامه نویسی با نمره ۱۰.۲۵ با یک شرکت پرسابقهی تولید نرم افزارهای ناکارآمد کامپیوتری قراردادی یک ساله امضا کرد. این قرارداد از جنبههای مختلف با روحیات او سازگار بود، اما اجرای یک بند از قرارداد برای او غیرممکن به نظر میرسید.
این بند از قرار داد از این قرار بود:
**تبصره بند ۳۹۵۲**: برنامه نویس موظف است کلیه کدهای خود را تمیزسازی کرده و با استاندارد زیر تحویل دهد:
+ همه بلاکهای داخلی (بلاک تابع، `for`، `if` و `while`) دقیقا با یک تو رفتگی(کاراکتر `tab`) نسبت به خط شروع بلاکشان میآیند.
+ بلاکها حتما با کاراکتر `}` شروع و با کاراکتر `{` تمام میشوند.
+ کاراکتر `}` در شروع بلاک همیشه در انتهای خط دستور مربوطهاش چسبیده به پرانتز و کاراکتر `{` انتهای بلاک با تورفتگی مناسب در یک خط مجزا میآید.
+ دستور `else` بعد از کاراکتر `{` انتهای بلاک `if` مربوط به خود میآید.
+ قبل و بعد از همه عملگرهای دو عملوندی یک کاراکتر اسپیس میآید.
+ عملگرهای تک عملوندی چسبیده به عملوند خود میآیند.
+ برای جداسازی با استفاده از کاراکتر `,` این کاراکتر به کاراکتر قبلی خود چسبیده و بعد از آن فاصله میآید.
+ کاراکتر `;` در انتهای هر خط به کاراکتر قبلی خود میچسبد و درون `for` بعد از `;` یک فاصله میآید.
+ محتوای درون پرانتز و کروشه بدون فاصله از کاراکترهای `()` و `{}` میآیند.
+ خط خالی درون کد وجود ندارد.
+ هیچ جای کد فاصله بی جا نباید وجود داشته باشد و هرجا نیاز به فاصله شود دقیقا یک کاراکتر اسپیس باید بیاید.
+ پرانتز ساختارهای `while, if , for` چسبیده به این کلمات میآید.
از آن جایی که علی به تازگی وارد بازار کار شده است مسئولین شرکت انتظارات زیادی از او ندارند و به همین دلیل او برای کد زدن تنها از امکانات زیر از زبان `C` استفاده میکند:
* توابع
* متغیرها و عبارات ریاضی و دستور انتساب
* `for`
* `if, else, else if`
* `while`
* `Include`های ابتدای کد(که تمیزبودن آنها تضمین میشوند و نیازی به اصلاح ندارند.)
از آنجایی که علی از ابتدای حیاتش با تمیز کد زدن مشکل داشته است با این که کدهایش همیشه درست بوده و کامپایل میشده اما در تحویل تمیز آن به مدیر فنی شرکت با مشکل جدی روبه رو شده است. به علی کمک کنید تا کدهایش به زبان سی که به درستی کامپایل میشوند را با توجه به خواست شرکت تمیز کند.
## ورودی
در ورودی یک کد صحیح به زبان `C` میآيد که در هر خط آن تنها یک دستور وجود دارد.
## خروجی
شما باید کد تمیز شده بر اساس معیارهای شرکت را در خروجی چاپ کنید.
مثال:
ورودی نمونه:
```C
#include <stdio.h>
int main (){
int i,n;
float arr [100 ];
printf ("Enter numbers :");
scanf ("%d" ,&n);
printf ("\n");
for(i=0;i<n;++i)
{
printf ("%d",i+1);
scanf ("%f" ,&arr[i]);
}
for(i=1;i<n;++i){
if(arr [0] < arr[i])
arr [0]= arr[i];
}
printf (" largest is %.2f",arr [0]);
return 0;
}
```
خروجی نمونه:
```C
#include <stdio.h>
int main (){
int i, n;
float arr [100];
printf ("Enter numbers :");
scanf ("%d", &n);
printf ("\n");
for(i = 0; i < n; ++i){
printf ("%d", i + 1);
scanf ("%f", &arr[i]);
}
for(i = 1; i < n; ++i){
if(arr [0] < arr[i])
arr [0] = arr[i];
}
printf (" largest is %.2f", arr [0]);
return 0;
}
```