سوال ۱۱

یک عدد صحیح نامنفی را زیبا می‌نامیم اگر هم مضربِ $3$ باشد و هم در نمایش دودوییِ آن، دو رقمِ یکِ متوالی وجود نداشته باشد. مثلا عددِ $9$ زیبا است چون هم مضربی از $3$ است و هم در نمایش دودویی آن ($1001$)، هیچ دو رقم یکی مجاور نیستند. چند عدد زیبا در بازه‌ی ${[0, 1023]}$ (شامل خود $0$ و $1023$) وجود دارد؟

  1. $48$
  2. $54$
  3. $38$
  4. $46$
  5. $30$

پاسخ

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

تعداد اعداد $n$ بیتی ($0$ تا $2^n - 1$) که زیبا هستند را $f(n)$ می‌نامیم. برای یافتن این تعداد، از رابطه‌ای بازگشتی استفاده می‌کنیم.

برای محاسبه‌ی تعداد اعداد زیبای $n$ بیتی، ابتدا $n-2$ بیت اول را طوری مقداردهی می‌کنیم که دو بیت پشت سر هم $1$ نداشته باشند، سپس $2$ بیت آخر را طوری مقداردهی می‌کنیم که عدد حاصل به $3$ بخش‌پذیر باشد. باقی‌مانده‌ی دو بیت آخر به $3$، با مشخص شدن سایر $n-2$ بیت تعیین می‌شود.

  1. اگر باقی‌مانده‌ی آن‌ها می‌بایست $0$ می‌بود، این دو بیت باید $00$ باشند (اگر $11$ باشند دو بیت یک پشت سر هم داریم).
  2. اگر باقی‌مانده‌ی آن‌ها می‌بایست $1$ می‌بود، این دو بیت باید $01$ باشند.
  3. اگر باقی‌مانده‌ی آن‌ها می‌بایست $2$ می‌بود، این دو بیت باید $10$ باشند.

در این حالت اگر بیت قبلی $1$ باشد، عدد حاصل زیبا نیست و باید تعداد این حالات را با استفاده از اصل متمم کم کنیم. در این حالت 4 بیت آخر عدد به شکل $0110$ است که چون باقی‌مانده بر $3$ی آن صفر است، $n-4$ بیت قبلی تشکیل یک عدد زیبا می‌دهند. پس تعداد این حالات برابر با $f(n-4)$ است.

اگر تعداد روش‌هایی که می‌توان $n$ بیت را با صفر و یک مقداردهی کرد که دو بیت پشت سر هم $1$ نداشته باشد، را $g(n)$ بنامیم، برای به دست آوردن مقدار $g(n)$، کافی است مقدار بیت آخر را مشخص کنیم. اگر برابر با $0$ باشد، بقیه‌ی بیت‌ها به $g(n - 1)$ حالت و اگر برابر با $1$ باشد، بیت بعدی باید برابر با $0$ و بقیه‌ی بیت‌ها به $g(n - 2)$ حالت انتخاب شوند. بنابراین می‌توان نوشت:

$$ g(n) = g(n - 1) + g(n - 2) $$

با شرایط اولیه: $g(0) = 1$ و $g(1) = 2$.

این رابطه برابر است با:

$$ g(n) = Fib(n + 1) $$

با $Fib(0) = Fib(1) = 1$.

حال برای به دست آوردن $f(n)$ طبق بررسی‌های بالا داریم:

$$ f(n) = g(n - 2) - f(n - 4) = Fib(n - 1) - f(n - 4) $$

با شرایط اولیه:

$$ f(0) = f(1) = f(2) = 1, \quad f(3) = 2 $$

و برای مقادیر بیشتر:

$$ f(4) = 2, \quad f(5) = 4, \quad f(6) = 7, \quad f(7) = 11, \quad f(8) = 19, \quad f(9) = 30, \quad f(10) = 48 $$

در نتیجه، از آن‌جا که $1023 = 2^{10} - 1$، پاسخ مسئله برابر با $f(10) = 48$ است.

▸ سوال قبل سوال بعد ◂