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

آمار پرسش:

  • پرسیده شده: 2015-04-13 10:59:25 -0500
  • مشاهده شده: 105 بار
  • بروز شده: 2015-04-13 14:30:36 -0500

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

سوال 3 روز اول مرحله دوم چهارمین المپیاد کامپیوتر ایران

سوال ۱ روز دوم مرحله ۲ دوره ۲۳: رشته‌ی نزدیک

بازی رنگی - سوال ۱ - مرحله ۲ - ۱۳۹۳

وزنه‌ها و ماشین جادویی - سوال ۲ - مرحله ۲ - ۱۳۹۳

گاوی خسیس - سوال ۳ - مرحله ۲ - ۱۳۹۳

انتقال مهره‌های گاوی - سوال ۴ - مرحله ۲ - ۱۳۹۳

یافتن کوچکترین پیچ و مهره با مقایسه آنها

دنباله و جادوگر - دوره ی 24 - مرحله ی 2

دوربین های عکاسی

مسئله ی مسیر و شبکه - مرحله ی 2 – دوره ی 23

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

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

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

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

علائم ریاضی:

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

مسئله 4 : آرایه ی a و کد پاسکال

0

الگوریتم زیر را در نظر بگیرید. این الگوریتم عناصر آرایه a را محاسبه می کند.

عنصر i ام آرایه a را در این الگوریتم با نماد [a[i نشان داده ایم.

1) [0]a را مساوی 0 و [1]a را مساوی 1 قرار بده.

2) k را مساوی 2 قرار بده.

3) [a[k را مساوی با [1-a[k قرار بده.

4) به مقدار [a[k یکی اضافه کن.

5) F را مساوی 1 قرار بده.

6) برای هر i که i از 1 تا k-1 است ، این مرحله را تکرار کن:

برای هر j که از 0 تا i-1 است این مرحله را تکرار کن:

اگر [a[k] - a[i] = a[i] - a[j است. F را برابر 0 قرار بده.

7) اگر F برابر 0 است. به مرحله 4 برو.

8) به مقدار k یکی اضافه کن . اگر k کوچکتر و مساوی 1373 است ، به مرحله 3 برو.

9) پایان

مساله به این صورت است:

الف) مقدار [0]a تا [10]a در انتهای الگوریتم چقدر است.

ب) تمام i هایی را پیدا کن که مقدار [a[i در انتهای الگوریتم بر 3 بخشپذیر است.

ج) مقدار [a[i در انتهای الگوریتم چقدر است؟ چرا؟

مرحله۲ دوره۴
2015-04-13 10:59:25 -0500
امین انوری 169 ● 1 ● 3 ● 8
پاک‌کردن   ویرایش سوال
نظرات

سلام میدونستید انجمن علمی نخبگان دانشگاه صنعتی شریف مسابقه تخصصی مهارت سنجی برنامه نویسی و داده کاوی گذاشته است آدرس سایتش www.fanavard.com

2015-08-06 07:18:28 -0500 امیر شکری

سلام میگم یک سر به سایت www.fanavard.ir بزنید. مسابقات برنامه نویسی شون شروع شده. گواهی رسمی از طرف دانشگاه شریف می ده. 50 تا سکه هم جایزشه

2016-10-26 06:27:24 -0500 امیر شکری

1 پاسخ

-2

جوابم رو با استفاده از کد پاسکالی که توی صفحه بعد سول اومده توضیح میدم، که نسبتا واضح تره نسبت به شبه کد. الگوریتم در واقع برای تعیین $a_k$ میاد اول اون رو برابر $a_{k-1} + 1$ قرار میده(به خاطر این که اول حلقه رو اجرا می کنه و بعد شرط رو چک می کنه حتما یه بار $a_k$ رو به علاوه یک می کنه. حالا میاد چک می کنه که آیا اندیس های $i$ و $j$ با شرط $j < i < k$ وجود دارن که $a_k = 2 * a_i - a_j$. حالا دو حالت وجود داره:

  • این اندیس ها وجود دارن: مقدار $َa_k$ همین مقدار فعلیش میمونه و به سراغ تعیین مقدار $a_{k+1}$ می رویم.
  • این اندیس ها وجود ندارن: مقدار $a_k$ یک واحد زیاد میشه و دوباره شرط چک میشه. این کار اونقدر تکرار میشه تا بالاخره اندیس ها رو پیدا کنیم و مقدار $a_k$ حساب بشه.

میشه با استقرا ثابت کرد که به ازای هر $k$ مقدار $َa_k$ برابر $k$ خواهد بود. برای پایه $0$ و $1$ رو در نظر می گیریم، بدیهیه که حکم برقراره. حالا فرض می کنیم که $a_0 = 0$، $a_1 = 1$ و ... $a_{k-1} = k - 1$. اول مقدار $a_k$ مساوی $k$ قرار میگیره. ثابت می کنیم که همینجا اندیس هایی که می خواستیم وجود دارن و $a_k$ دیگه زیاد نمیشه. حالا دو حالت وجود داره:

  • $k$ زوجه: اندیس $i$ رو برابر $\frac k2$ و $j$ رو برابر $0$ قرار میدیم. واضحه که الگوریتم این اندیس ها رو هم چک می کنه. با توجه به فرض استقرا میدونیم که $2 * a_{\frac k2} - a_0 = k$، در نتیجه شرط متوقف کننده حلقه برقرار میشه و $a_k$ دیگه زیاد نمیشه و برابر $k$ میمونه.
  • $k$ فرده: اندیس $i$ رو برابر $\frac{k+1}{2}$ و $j$ رو برابر $1$ قرار میدیم. باز هم به راحتی میتونیم ثابت کنیم که شرط متوقف کننده حلقه برقرار میشه و مقدار $a_k$ مساوی $k$ میمونه.

پس ثابت شد که به ازای تمامی $k$ ها، چه زوج و چه فرد، $a_k = k$. الگوریتم تا $k = 1374$ رو مقدار میده. با این اطلاعات جواب سوال ها کاملا مشخصه:

  • الف) $0$ تا $10$
  • ب) $i$ های بخش پذیر بر 3 کوچک تر مساوی $1374$. یعنی $0$، $3$ و ... $1374$
  • ج) $i$
2015-04-13 14:28:25 -0500
سینا 1 ● 1
پاک‌کردن   ویرایش پاسخ

پاسخ شما

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

پیش‌نمایش:

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