Las otras respuestas, hacer un buen trabajo de explicar que si $p=f(m,n)$ $2^m$ es la mayor potencia de dos que divide $p+1$. Sin embargo, hasta el momento todas las funciones inversas se describe en las palabras. Si desea una fórmula para la inversa de la función, en primer lugar, defina $\mathrm{Ruler}(q)$ a ser el exponente de la potencia más alto de los dos que divide $q$. Esta es una función común en la teoría de los números, aunque si se busca se puede encontrar el mismo nombre pero diferentes Thomae de la función en los números reales. El código de Python para $\mathrm{Ruler}()$ se da al final de esta respuesta, aunque en matemática teórica sería definido por la recursividad. Dado que la función, $m$ es fácil de encontrar como $\mathrm{Ruler}(p+1)$ y la parte dura está mostrando una fórmula para $n$. Aquí son tres expresiones de su función inversa con el resultado dado como un par ordenado $(m,n)$.
En MathJax:
$$f^{-1}(p)=\left(\mathrm{Ruler}(p+1),\ \frac{\dfrac{p+1}{2^{\mathrm{Ruler}(p+1)}}-1}2\right)$$
In an inline expression (using two asterisks for exponentiation rather than the caret since I can't figure out how to escape the caret character in MathJax):
$$f^{-1}(p)=(\mathrm{Ruler}(p+1), ((p+1)/2\mathrm{**}\mathrm{Ruler}(p+1)-1)/2)$$
Como un código de Python en línea:
(Ruler(p+1), ((p+1) // 2**Ruler(p+1) - 1) // 2)
Y aquí está mi código de Python para la regla de la función:
def ruler(n):
"""Return the exponent of the highest power of 2 dividing n. This
is also the number of trailing zeros in the binary expansion of n,
or the number of trailing ones in the binary expansion of n - 1.
A graph of this resembles the markings of fractions of an inch on a
ruler. See sequence A007814 at oeis.org."""
n = int(n)
if not n:
raise ValueError('ruler(0) is undefined')
result = 0
while not (n & 1):
n >>= 1
result += 1
return result