Loading [MathJax]/jax/output/HTML-CSS/jax.js

سوال ۲۴

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

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

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

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

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

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

راهنمایی

به جایگاه بزرگ‌ترین بیت عدد j زمانی که iXORj>j دقت کنید.

راهنمایی

بزرگ‌ترین بیت عدد j می‌بایست در جایگاهی قرار گیرد که در عدد i در آن جایگاه عدد صفر واقع شده باشد.

راهنمایی

چیستی باقی بیت‌های عدد i و بیت‌های با ارزش کمتر j اهمیتی ندارد.

راهنمایی

بر روی جایگاه پر ارزش ترین بیت ۱ عدد j حالت بندی کنید.

پاسخ

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

تمام اعداد را به صورت اعداد پنج رقمی در نمایش مبنای ۲ می‌بینیم. فرض کنید a=(i XOR j) و بیت k ام (از سمت چپ) نخستین بیتی باشد که در عدد i برابر ۰ و در j برابر ۱ است (باید چنین بیتی موجود باشد، در غیر این صورت a>i نمی‌شود). برای آن که a>i باشد، باید تا قبل از بیت k ام، این حالت رخ ندهد که بیت متناظر در هر دو عدد i و j برابر ۱ باشد. پس 2k1×45k=29k حالت داریم. با در نظر گرفتن k های مختلف،‌ پاسخ برابر 28+27+26+25+24=496 است.