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

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

آمار پرسش:

  • پرسیده شده: 2015-05-19 13:33:09 -0500
  • مشاهده شده: 488 بار
  • بروز شده: 2015-05-23 05:26:24 -0500

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

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

‌فلسفه ی وجود و یا عدم وجود جفت اعداد مسخره

محاسبه ${n \choose k}$ به پیمانه M

BWC Round #1 - ک.م.م - ک.م.م اعداد ۱ تا n را بیابید.

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

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

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

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

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

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

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

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

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

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

علائم ریاضی:

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

پیدا کنید تعداد جفت اعدادی که یکی بیشتر از a و کمتر از b باشد و دیگری کمتر از a باشد و نسبت به هم اول باشند

6

پیدا کنید تعداد جفت اعدادی که یکی بیشتر از a و کمتر از b باشد و دیگری کمتر از a باشد و نسبت به هم اول باشند

a<=b<=50000

محدودیت زمانی : 1s

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

برنامه-نویسی نظریه-اعداد
2015-05-19 13:33:09 -0500
حمیدرضاه 2979 ● 20 ● 26 ● 52
پاک‌کردن   ویرایش سوال
نظرات

khub for mizani gcd migiri dge

2015-05-19 14:25:31 -0500 آرش خن

sry soal eshteb shod

2015-05-19 14:29:24 -0500 حمیدرضاه

har adad hade aksar bar 6 amele aval bakhshpazire baghiasho dige khodet boro

2015-05-19 14:49:40 -0500 آرش خن

mishe kamel khodet begi ?!?!?!?

2015-05-19 14:58:17 -0500 حمیدرضاه

Baw be ezaye har adad mituni yejori asle shombolo adame shombol bezani

2015-05-19 15:26:29 -0500 آرش خن

2 پاسخ

7

راه حلو کدوار میگم دیگه اثبات تیکه تیکش با خودتون... ایشالا قانع کننده باشه!
تعریف میکنیم:
$f(a, n)$ ینی تعداد اعداد کوچیکتر-مساوی $a$ که نسبت به $n$ اولن.
برا پیدا کردن $f(a, n)$ میایم بازگشتی میزنیم. چند حالت داره:
۱) اگه $a=1$ اونموقه $f(a, n) = 1$
۲) اگه $n = 1$ اونموقه $f(a, n) = a$
۳) اگه هیچکدوم از بالاییا نبود، میایم $n$‌ رو مینویسیم: $n = p^kq$ بصورتی که $p$ اوله و $gcd(p, q) = 1$ و $1 \le k$. حالا میشه فهمید که:
$$f(a, n) = f(a, q) - f(\lfloor\frac ap\rfloor, q)$$
حالا جواب مسئله هم میشه مجموع $f(a-1, x)$ برای $a < x < b $. $^_^$

پی نوشت: اینم کد تابع f که خودشو تست میکنه! D:
پی نوشت۲: زمان اجرای یبار صدا زدن تابع $f(a, b)$ رو میشه اینجوری بررسی کرد: حداکثر تعداد عملیات هایی که صدا زده شدن $f(a, n)$ به ازای همه ی $a$ های دنیا انجام میده رو میگیم $T(n)$. کلن برا $T(n)$ داریم که $T(n) \le 2T(q)$ که $q$ رو بالا تعریف کردیم. با استقرا میشه ثابت کرد که $T(n)$ حداکثر برابر دو به توان تعداد عوامل اول متفاوت $n$ـه که اون هم برای $n \le 50000$، حداکثر میشه $2^6 = 64$.
پس کلن زمان اجرای برنامه حداکثر $64\times b$ ـه که زیر ۱ ثانیه تموم میشه!
پی نوشت ۳:این همون $T(n)$ رو حساب کرده و به همونی که ما رسیدیم رسیده! ولی تو قسمت formulaـش نوشته که $\sum_{n=1}^bT(n) = O(blogb)$
پی نوشت ۴:اینم اثبات پی نوشت ۳!

یکم یاد این سوال افتادم : فلسفه ی وجود و یا عدم وجود جفت اعداد مسخره
حالا که نزدیک مرحله ۳ هم هست وقت بذارین حل کنینش!

2015-05-20 11:05:14 -0500
محمد مهدی 1955 ● 5 ● 12 ● 40
پاک‌کردن   ویرایش پاسخ
نظرات

میدونید چی شده من سوال شما رو داشتم تلاش میکردم حل کنم به این مشکل خوردم الان که گفتین حل شد :))))

2015-05-20 11:53:02 -0500 حمیدرضاه

:)

2015-05-20 11:59:36 -0500 کنکوری

یکمم دلیل درستیه اون تابعه رو هم بگین tnx

2015-05-20 12:00:47 -0500 حمیدرضاه

یه مشکلی داشت الان درست شد. حدود اثبات درستی اون تابعه: همه ی افراد کوچیکتر از a رو دو دسته کن: به p بخش پذیرن و نیستن. حالا تو f(a,q) کسایی رو اضافی میشمری که تو دسته اولن و نسبت به q اولن و از a کمترن. هرکدوم از افرادی که تو f(a/p, q) شمردیمو در p ضرب کنیم میشه یکی از اونا!

2015-05-20 13:01:01 -0500 محمد مهدی

اون سواله رو اگه حل کردی حتمن راهتو بگو!

2015-05-20 13:01:24 -0500 محمد مهدی
1

میتونی از تابع فی اویلر استفاده کنی.برای همه اعداد a+1 تا b مجموع فی هاشون رو حساب کن. واضحه هر زوجی یبار شمرده شده دیگه.(وقتی مولفه بزرگشو میشمردیم).تابع فی از $O(NlgN)$ پیدا میشه.بقیه کارم که با $O(N)$ انجام میشه. در کل $O(NlgN)$ میشه.

الان کد میزارم.... پ.ن : کد

2015-05-20 06:33:03 -0500
روبیک 2379 ● 13 ● 27 ● 44
پاک‌کردن   ویرایش پاسخ
نظرات

درسته؟ برای یه مثال کوچیک دستی تست کردم درست بود با این حال اگه زحمتی نیست تستش کن!

2015-05-20 06:46:26 -0500 روبیک

کاملا اشتباهه تو باید اون یکی عددت کوچکتر از a باشه

2015-05-20 06:57:31 -0500 حمیدرضاه

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

2015-05-20 06:59:04 -0500 حمیدرضاه

ولی تو اینو ننوشتی...

2015-05-20 07:02:54 -0500 روبیک

چون b>=a پس یکی از عددها از بازه 1 تا b و اون یکی از بازه a تا b باید انتخاب بشه.

2015-05-20 07:05:08 -0500 روبیک

پاسخ شما

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

پیش‌نمایش:

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