Definir $f:\mathbb{N}\rightarrow\mathbb{N}$ de la siguiente manera, $f(n)$ es el número de veces que se necesita el dígito "1" si escribiéramos todos los enteros entre 1 y $n$ (inclusive) en base 10. Así, por ejemplo
$f(1)=1$
$f(2)=1$
$f(3)=1$
...
$f(9)=1$
$f(10)=2$
$f(11)=4$
$f(12)=5$
...
$f(99)=20$ y así sucesivamente. Claramente $f(1)=1$ es un punto fijo. La pregunta original era encontrar el siguiente punto fijo. Inmediatamente establecí la relación recursiva
$$f(10^k-1)=10\cdot f(10^{k-1}-1)+10^{k-1}$$
con $f(9)=1$ . Entonces obtuve la relación explícita
$$f(10^k-1)=k\cdot 10^{k-1}.$$
Así que vemos que después de $n=1$ , $f(n)<n$ hasta llegar a $f(9,999,999,999)=10,000,000,000$ por lo que el punto fijo debe estar entre mil y diez mil millones. Entonces, después de contar cuidadosamente y de no perder de vista lo que estaba haciendo, obtuve que el punto fijo era
$$f(1,111,111,110)=1,111,111,110.$$
Ahora mis preguntas son
-
¿Alguien sabe el origen de este problema? ¿Es un problema de Putnam/IMO/etc.? Escuché originalmente este problema hace mucho tiempo cuando empecé mi licenciatura y acabo de recordar al azar de nuevo hace unos días.
-
¿Existe una forma elegante o más fácil de hacer esto de forma analítica?
-
Como no sé cómo me enteré de este problema... y es una pesadilla de recuperación de datos (como cuando intento buscar en Google), no tengo ni idea de si mi solución es correcta o no. ¿Alguien puede tal vez verificarla? No sé si me he equivocado al contar o no.
-
¿Es posible codificar esto de manera eficiente para que pueda obtener una respuesta mediante una simulación? Por lo que recuerdo, probé con MATLAB y Mathematica, pero me llevó tanto tiempo que tuve que matarlos sin saber la respuesta y volver al papel y al lápiz. No probé C++ ni FORTRAN. En Mathematica intenté "optimizar" todo lo que pude usando sus funciones incorporadas pero era demasiado lento. En MATLAB, no pude ver cómo vectorizarlo así que sólo tuve que escribir un bucle que, por supuesto, es una mala idea. ¿Algún algoritmo eficiente? ¿Alguna idea?
-
Más bien una pregunta teórica, ¿hay alguna manera de probar que otro fijo después de $n=1$ incluso existe sobre $\mathbb{N}$ ? Utilizando la relación recursiva anterior vemos que
$f(999,999,999)=900,000,000$
y
$f(9,999,99,999)=10,000,000,000$
así que $f(n)>n$ y luego simplemente reduzco el intervalo hasta que obtengo $f(n)=n$ . Si consideramos la continuación suave de $f(x)$ en $\mathbb{R^+}$ entonces sí el teorema del valor intermedio nos garantiza el punto fijo ( $f(x)-x$ tiene un $x$ -intercepción porque cambia de signo). ¿Pero cómo sabemos, cómo podemos demostrar que el punto fijo está EXACTAMENTE en un número entero? Quiero decir que sé que la respuesta debe existir porque la pregunta fue planteada, pero francamente estoy un poco sorprendido de que haya otro número entero después de uno en el que el número entero es exactamente igual al número de veces que se necesita "1" para llegar allí.
6.¿Podemos decir algo sobre el comportamiento a largo plazo de $f$ ? Como la voluntad $f(n)$ sea siempre mayor que $n$ después del segundo punto fijo o oscilará yendo por encima y por debajo $n$ arbitrariamente muchas veces como $n$ tiende al infinito? ¿Existen otros puntos fijos? ¿Hay otros puntos fijos sobre los números naturales? ¿Hay alguna forma de encontrarlos todos? ¿La continuación suave de $f$ a los reales tiene una expresión de forma cerrada? ¿Cuál sería?
Gracias.