難易度
推測:☆
立式:☆☆
ヒント
THE FUNCTION CONVERTS BINARY TO DECIMAL.
FIND THE BINARY EQUIVALENT OF 666.
この関数は2進数を10進数に変換している。
666に等しい2進数を見つけること。
条件
- Δx:xを2進数表記から10進数表記にした値。
- Δ0 = 0
- Δ10 = 2
- Δ1111 = 15
- 使用禁止:[.][2][3][4][5][6][7][8][9]
解説
使用可能な数字ボタンが[0]と[1]のみというインパクトから実際に計算しなくても大体察せられる希有な問題ではないだろうか。
Xを10進数整数としたとき、YをXの2進数表記とし、Yのi桁目の数字をy(i)とすると、次の関係が成り立つ。
y(i) = {X÷(2^i)} % 2
この関係にしたがって、X=666としたときのXの2進数表記の各桁y(i)を調べていくと、
y(0) = (666÷1) % 2 = 666 % 2 = 0 y(1) = (666÷2) % 2 = 333 % 2 = 1 y(2) = (666÷4) % 2 = 166 % 2 = 0 y(3) = (666÷8) % 2 = 83 % 2 = 1 y(4) = (666÷16) % 2 = 41 % 2 = 1 y(5) = (666÷32) % 2 = 20 % 2 = 0 y(6) = (666÷64) % 2 = 10 % 2 = 0 y(7) = (666÷128) % 2 = 5 % 2 = 1 y(8) = (666÷256) % 2 = 2 % 2 = 0 y(9) = (666÷512) % 2 = 1 % 2 = 1
9超過のiでは2^iが666を上回ってしまい666÷2^i=0となるので、y(i)=0となることが分かる。
よって、10進数表記666の2進数表記Yは
Y = 1010011010
であることが分かる。
解答例
- Δ1010011010