المپدیا

دانش‌نامه‌ی المپیاد کامپیوتر ایران

ابزار کاربر

ابزار سایت


سوالات المپیاد:مرحله ی اول:دوره ی ۲۷:سوال ۲۴

سوال ۲۴

پس از اجرای الگوریتم زیر، مقدار $S$ چه خواهد بود؟

۱. $S$ را برابر ۰ قرار بده.

۲. به ازای $i$ از ۰ تا ۳۱ انجام بده:

۱-۲. به ازای $j$ از ۰ تا ۳۱ انجام بده:

۱-۱-۲. اگر $(i\ XOR\ j)$ از $i$ بزرگ‌تر شد، $S$ را یک واحد زیاد کن.

  1. ۳۴۱
  2. ۹۹۲
  3. ۸۳
  4. ۴۹۶
  5. ۴۵۱

پاسخ

گزینه‌ی ۴ درست است.

تمام اعداد را به صورت اعداد پنج رقمی در نمایش مبنای ۲ می‌بینیم. فرض کنید $a = (i\ XOR\ j)$ و بیت $k$ ام (از سمت چپ) نخستین بیتی باشد که در عدد $i$ برابر ۰ و در $j$ برابر ۱ است (باید چنین بیتی موجود باشد، در غیر این صورت $a>i$ نمی‌شود). برای آن که $a>i$ باشد، باید تا قبل از بیت $k$ ام، این حالت رخ ندهد که بیت متناظر در هر دو عدد $i$ و $j$ برابر ۱ باشد. پس $2^{k-1} \times 4^{5-k}=2^{9-k}$ حالت داریم. با در نظر گرفتن $k$ های مختلف،‌ پاسخ برابر $$2^8+2^7+2^6+2^5+2^4 = 496$$ است.


ابزار صفحه