سوال ۷

الگوریتم زیر را در نظر بگیرید:

برای مثال٬ اگر به این الگوریتم عدد ۹ را بدهیم خروجی مقدار ۲ را برمی‌گرداند. اکنون فرض کنید اعداد ۱ تا ۱۳۸۸ را یکی‌ یکی به این الگوریتم می‌دهیم و هربار خروجی الگوریتم را یادداشت می‌کنیم. بزرگ‌ترین عددی که یادداشت می‌کنیم٬ چند است؟

  1. ۹
  2. ۱۰
  3. ۱۱
  4. ۲۰
  5. ۶۹۴

پاسخ

گزینه (۲) درست است.

اگر عدد $x$ را در مبنای دو در نظر بگیریم گام‌های اول و دوم داخل حلقه باعث می‌شوند که اگر کم‌ارزش‌ترین رقم عدد $x$ صفر بود یکی به $a$ اضافه شود و گام سوم باعث می‌شود که رقم کم‌ارزش عدد در مبنای دو حذف شود. این سیکل در انتها تعداد رقم‌های صفر عدد را به عنوان خروجی می‌دهد. از بین اعداد ۱ تا $1388$ عدد $2^{10}$ بیش‌ترین تعداد یعنی ۱۰ صفر در مبنای دو دارد.