اولین باره که به کاهو میای؟ راهنمای سایت رو حتما بخون!

ورود ثبت‌نام راهنما درباره‌ی کاهو
پرسش‌ها برچسب‌ها کاربر‌ها سوال بپرسید!

آمار پرسش:

  • پرسیده شده: 2015-05-30 04:08:31 -0500
  • مشاهده شده: 782 بار
  • بروز شده: 2015-06-02 05:41:57 -0500

پرسش‌های مشابه:

وبسایت مسابقه‌های برنامه نویسی

یافتن کوتاه ترین دور در گراف ساده

راهنمایی برای برنامه نویسی

کد مساله هشت وزیر با استفاده از الگوریتم ژنتیک

مجموع ارقام ! 100

مرجع فارسی برای الگوریتم های هندسی و 2sat

نظریه اعداد لازم برای المپیاد کامپیوتری ها

برای مرحله سوم، تا چه سطحی باید برنامه نویسی بلد باشیم؟

اولین جمله از دنباله ی فیبوناچی که 1000رقم داشته باشد چیست؟

چه جاج‌هایی برای المپیاد کامپیوتر خوب هستند؟

نکاتی در مورد نوشتن پاسخ:

در این قسمت می‌تونی به یک پرسش پاسخ بدی. اگه می‌خوای در مورد پرسش بحث و اظهار نظر کنی از قسمت «ثبت نظر» استفاده کن.
پاسخت رو دقیق و کامل بنویس، از عکس استفاده کن و اگه لازمه به منابع (کتاب یا سایت) ارجاع بده.
اگه پرسش یا پاسخ‌ها مفید هستند حتما بهشون رای بده تا پرسش‌ها و پاسخ‌های خوب مشخص بشن.

استفاده از ویرایشگر:

توی قسمت پیش‌نمایش می‌تونی ببینی متنی که نوشتی چجوری روی سایت دیده میشه.
خیلی مهم: برای اینکه به خط بعد بری باید دوتا Enter بزنی.
می‌تونی از تگ‌های معمولی و ساده‌ی html هم استفاده کنی.
با دکمه‌هایی که بالای ویرایش‌گر قرار دارند کلی کار می‌شه کرد. از عکس‌گذاشتن بگیر تا لیست شماره‌دار. حتما امتحان‌شون کن.

علائم ریاضی:

برای نوشتن علائم ریاضی می‌تونی از Mathjax استفاده کنی. راهنمای Mathjax رو از سایت math.stackexchange بخون.
برای نوشتن عبارت ریاضی وسط جمله، اون عبارت رو بین دوتا $ قرار بده.
برای نوشتن عبارت ریاضی تو یه خط جدید اون رو بین دوتا $$ قرار بده.

سوال خودم : ماجراهای توپ های رادین!

10

توپ های رادین!

پدر و مادر رادین شاغل هستند و صبح ساعت ۶ تا شب ساعت ۷ در خانه نیستند. به همین دلیل رادین مجور است در این ساعات در خانه تنها بماند. این کار برای رادین کسل کننده است به همین دلیل امروز رادین تصمیم گرفته است با توپ هایش بازی کند.

بازی با یک تاس و یک کیسه از توپ ها انجام میشود. رادین در کل n توپ دارد و همه آنها را در ابتدا داخل کیسه ریخته است.

در هر مرحله از بازی رادین تاس میریزد و به همان اندازه که روی تاس نوشته شده است از کیسه اش توپ بیرون می آورد.

این بازی هم مثل همه بازی های دیگر برای رادین اصلن جالب نیست. اما ناگهان یک سوالی به ذهن رادین میرسد :‌ امید ریاضی تعداد تاس انداختن ها چند تاست؟

رادین دوست دارد جواب سوالش را بداند. شما به سوالش پاسخ دهید تا رادین کمی هم که شده لبخند بزند :)

توجه کنید که اگر در لحظه ای در کیسه کم تر از ۶ تا توپ باشد رادین بیخیال ادامه بازی میشود و بازی را تمام می کند.

زیرمساله اول :‌ $n<=10^5$
زیرمساله دوم‌ : $n<=10^{18}$

ضمنن :‌ صرفن واسه اینکه خودم طرحش کردم اینجا گذاشتم! به هیچ وجه تضمین نمیشود که سوال سوال خوبی باشد :)
موفق باشید!

برنامه-نویسی
2015-05-30 04:08:31 -0500
ناسحا 345 ● 3 ● 4 ● 10
پاک‌کردن   ویرایش سوال
نظرات

خب الان این حل شد :) ولی یه خرده وقت می‌خوام که این بار بخوابم :) باشه بعد از اینکه از خواب بیدار شدم جواب می‌دن

2015-05-30 06:43:56 -0500 احسان

واقعن انقدر سوال خوب بود که چهار تا مثبت خورد؟‌ راستی احسان من خودم خواب بودم تا الان! فک نکنم از اون راهی که تو ذهن منه حلش کرده باشی. حالا بگو ببینیم چی میشه! ضمنن انقدر به بقیه گیر میدی آخر جملت نوشتی جواب میدن که باید بشه جواب میدم. همین دیگه!‌ =)

2015-05-30 08:16:11 -0500 ناسحا

این سوال جاج هم داره؟ینی از سایتی برداشتی؟اگه اره ادرس بده سابمیت کنیم

2015-05-30 09:24:18 -0500 سجیل

نه! جاج نداره! همینطوری داشتم به یه سری چیزا فک می کردم این سوال به ذهنم رسید بعد حل شد بعد گفتم اینجا بذارم :) ولی شاید یه چیزی هم واسش درست کردم! نیمیدونم!

2015-05-30 09:28:08 -0500 ناسحا

@یکی اسمم رو گرفته اون موقع که اینو می‌نوشتم خیلی خوابم میومد! بعد تازه "م" و "ن" کنار هم هستن :)

2015-05-30 09:47:24 -0500 احسان

3 پاسخ

10

بعد از یه سال و اندی، بلخره یه سوال با ضرب ماتریس حل کردم! $^_^$
پیشنهاد میکنم اگه با ضرب دوتا ماتریس تو هم آشنایی ندارین، قبل از خوندن راه حل یه نیگا به اینجا بندازین!
همونجور که @کنکوری گفت، اگه جواب برای $n$ رو بگیم $f(n)$، داریم:
$$f(n) = \frac16(f(n-1) + f(n-2) + ... + f(n-6)) + 1$$ خب! ماتریس $M_i$ که یه سطر و ۷ تا ستون داره رو تعریف میکنیم:
image description
فرض کنین ماتریس $T$ هم یه ماتریس $7 \times 7$ این شکلیه:
image description خب، حالا اگه $M_i$ رو تو $T$ ضرب کنیم، میشه:
$ \begin{pmatrix} 1 &f(i-4) & f(i-3) & f(i-2) & f(i-1) & f(i) & 1+\frac16(f(i-5) + ... + f(i)) \end{pmatrix}$

که همون $M_{i+1}$ـه! پس حالا برا حساب کردن $M_n$، میایم میگیم:
$$M_n = M_{n-1}T = M_{n-2}T^2 = ... = M_5T^{n-5}$$
خب چون طبق فرض سوال، $f(i)$ برای $i \le 5$ برابر ۰ـه، $M_5$ میشه یه ماتریس ۱ در ۷ که اولیش ۱ـه بقیش ۰ـه...
حالا تنها مشکل، حساب کردن $T^{n-5}$ـه. چون ضرب ماتریس خاصیت شرکت پذیری داره (ینی $M_1(M_2M_3) = (M_1M_2)M_3$ )پس میشه اونو هم مثل به توان رسوندن عددا، $O(logn)$ حساب کرد.
پس در نهایت زمان اجرای راه حل میشه $7^3log(n)$ که خوبه!
پیاده سازیش یکم دردسر داره... ولی بعد از اینکه اون ماتریسا رو دراوردیم و ضرب کردیم، جواب یا همون $f(n)$ میشه خونه هفتم $M_n$!

2015-06-02 05:17:00 -0500
محمد مهدی 1955 ● 5 ● 12 ● 40
پاک‌کردن   ویرایش پاسخ
نظرات

چه باحال :)

2015-06-02 05:25:53 -0500 حمیدرضاه

من خودم هم همینطوری حل کردم! واقعن ممون :)

2015-06-02 05:31:59 -0500 ناسحا

خواهش میکنم! :) تو هم دستت درد نکنه، سوالت مفید بود.

2015-06-02 05:56:40 -0500 محمد مهدی

بسیار بسیار عالی

2015-06-02 07:17:38 -0500 کنکوری

آفرین!

2015-06-02 10:18:53 -0500 روبیک
3

سلام!
امیدوارم از سوال خوشتون اومده باشه این یک!
و اینکه گفتم چون که محمد مهدی کد نذاشت کد خودم رو بذارم تا نحوه زدن این ضرب ماتریس رو هم یاد بگیرید! ( اگه بلد نیستید‌:)‌ )
همین دیگه الکی زیاد حرف نزنم!
اینم کد : http://ur1.ca/mpqcx
اگه جاییش مشکل داشت ( که فک نکنم داشته باشه!‌ ) یا اینکه مشکلی توی فهمیدن کد بود همین زیر بگید بگم D:

خوش باشید!

2015-06-02 05:41:57 -0500
ناسحا 345 ● 3 ● 4 ● 10
پاک‌کردن   ویرایش پاسخ
نظرات

خدا خیرت بده!! جدی حال نداشتم کدشو بزنم! D:

2015-06-02 05:56:02 -0500 محمد مهدی

سلام! از ضرب ماتریس متنفرم و بدبختیش اینه که خیلی کاربردیه

2015-06-02 06:18:53 -0500 آقوی همساده

.

2015-06-02 06:19:46 -0500 آقوی همساده

@محمد مهدی اگه سوال خودم نبود عمرن نمی نوشتمش‌ XD

2015-06-02 06:20:58 -0500 ناسحا

@حمیدرضاهدایتی من هم اینو کسی بهم نگفت خودم به این نتیجه رسیدم که بهتره اینطوری بزنم!

2015-06-02 06:21:58 -0500 ناسحا
3

اینم جواب :

در هر مرحله 6 تا حالت ممکنه اتفاق بیفته که احتمال همشون هم 1/6 هستش پس اگر جواب برای i رو با a(i) نشون بدیم جواب برای n برابر این خواهد بود:

a(n-1)+a(n-2)+a(n-3)+a(n-4)+a(n-5)+a(n-6)/6 بعلاوه ی یک

که با یه dp ساده حل میشه:

http://pastebin.ubuntu.com/11495952/ نکته 1: خوش حالم که بابت مقدار دهی به 6 تا خانه ی اول ایراد نگرفتید(خودم پاکش کردم)

الان یه ذره بدیهی ترم شد.

نکته 2: جهت افزایش سرعت کامپایل bits/stdc++.h با iostream ویرایش شد.تا بیجهت زمان کامپایل افزایش نیابد.

2015-06-01 06:42:31 -0500
کنکوری 1683 ● 13 ● 27 ● 40
پاک‌کردن   ویرایش پاسخ
نظرات

خب قسمت دومش چی شد پس؟؟!!

2015-06-01 06:43:27 -0500 ناسحا

اینکه مال قسمت اولشه که کنکوری!!

2015-06-01 06:44:29 -0500 حمیدرضاه

مگه من گفتم قسمت دومشو حل کردم!!!!(البته میشه یه حلقه زد از 6 تا 10^18 !!

2015-06-01 06:46:08 -0500 کنکوری

اشکال هم داره کدت!

2015-06-01 06:46:12 -0500 ناسحا

خب اصن کل سوال واسه قسمت دومشه!!!

2015-06-01 06:46:48 -0500 ناسحا

پاسخ شما

فقط در صورتی که پاسخی برای این پرسش دارید، آن را اینجا بنویسید و برای بحث کردن از قسمت «ثبت‌ نظر» استفاده کنید. شما می‌توانید قبل از وارد شدن به سایت پاسخ خود را بنویسید. این پاسخ ذخیره می‌شود و زمانی که شما وارد سایت شدید یا ثبت‌نام کردید منتشر می‌شود.

پیش‌نمایش:

کلیه‌ی حقوق این سایت متعلق به کمیته‌ی ملی المپیاد کامپیوتر است.