自然数から自然数への関数 y = f(x) を
y = x + a + (~b & (b-1))
で定義する。ただし、a および b は
x = a*(2*b-1) ; aは1,2,4,8,...のように2の冪で表せる数、bは自然数
で定まるものとする。
尚、 “~” は 否定 NOT 、 “&” は 論理積 AND を表す。


f(10)=f(2*5)=10+2+(~3 & 2)=12+(~[11] & [10])=12+([00] & [10])=12
f(11)=f(1*11)=11+1+(~6 & 5)=12+(~[110]&[101])=12+([001]&[101])=13
f(12)=f(4*3)=12+4+(~2&1)=16+(~[10]&[01])=16+([01]&[01]=17=f^2(10)
f(13)=13+1+(~7&6)=14=f^2(11)
f(14)=14+2+(~4&3)=19


問題1:f^10(10)を求めよ
問題2:f^m(n)=2019 となる (m,n)のうち、m+nを最小にする(m,n)を求めよ
問題3:f^m(n)=20190121 となる (m,n)のうち、m+nを最小にする(m,n)を求めよ