Вообще-то надо брать log(по основанию 2 заданного числа) и округлять до большего целого. Но проще смотреть на степени числа 2:
а) 2^6=64<65, значит надо 7 бит
б) 2^8=256 -8 бит (ровно)
в) 2^15=32768 -15 бит
г) 2^12=4096>4095 12бит достаточно
д) 2^16=65536 -16 бит
е) 2^21=2097152 мало, значит надо 22 бита
Решено, исходные данные:
<em>a(1)=0 a(2)=1</em>
<em>a(n+2)=a(n+1)</em><span><em>-a(n)</em>
<em>Найди a(885)</em>
<em>Внимание: скобка означает число в нижнем индексе.</em>
Решаем, исходим сразу от наибольшего числа:
</span><em>a(885)=a(884)-a(883)=a(883)-a(882)-a(883)=a(882)
</em>В чем фокус-покус. Сначала мы применили формулу по отношению к числу<em>a(885)</em><span>, а потом к числу </span><em>a(884)</em><span>, из чего получилось равенство </span><em>a(885)=a(882)</em>
Тем самым, мы можем утверждать, что числа в последовательностях будут совпадать каждые 885-882=3 раза. 885 кратно 3, следовательно ищем наименьшее общее кратное число, оно равно 3. Следовательно a(885)=a(3)
<span>Находим </span><em>a(3)</em><span> из формулы:</span><em> a(3)=a(2)-a(1)=1-0=1</em><span>, следовательно </span>a(885)=1
<em /><em /><em>VAR</em>
<em> a, b: LongInt;</em>
<em>BEGIN</em>
<em> Read(a, b);</em>
<em />
<em> If (a > b) then Write(a, ' > ', b)</em>
<em> Else If (b > a) then Write(b, ' > ', a)</em>
<em> Else Write(a, ' = ',b);</em><em> </em>
<em>END.</em>
В клеточку, в линейку, в кружочек(да, такие есть)