El décimo segundo término de la série de Fibonacci, es el primero en tener tres dígitos, y la pregunta es cual es el primer término de la serie que tiene 1000 dígitos.
Como de costumbre, teniendo claro el objetivo me senté frete a mi súper pc y empecé a pensar en como conseguir la meta, mi primer pensamiento estuvo en determinar uno a uno cada término de la serie de Fibonacci y contar cada término cuantos dígitos tiene de tal forma que el programa terminaría cuando encuentre el primer término de 1000 dígitos, así lo hice, unas cuantas líneas de código, un par de pruebas y estaba todo listo, empecé a hacerlo andar, vi que se demoraba mucho pero no lo detuve porque sabía que otros de mis algoritmos se han tardado hasta más de dos horas para encontrar la respuesta, sin embargo llegó un punto en el que mi intuición más que mi impaciencia me llevó a detener el proceso, apagar e irme a descansar.
Hoy al levantarme lo primero que hice fue sentarme nuevamente junto a mi súper amigo y empezar desglosar qué es lo que estaba pasando, empecé a poner a prueba mi algoritmo aumentando poco a poco el número de dígitos 100, 200, 300, 400 y empezó a tardarse, lo detuve ya que tenía claro que el inicio de la demora estaba entre 300 y 400, nueva prueba en 350 y nada (demora...), empecé entonces aumentando dígito a dígito desde 300, 301, 302, ... 309 y todo bien pero... en 310, demora. Bien, decidí hacer al cálculo del término con 310 dígitos a pedal, entonces tome la forma general de la serie de Fibonacci y busqué calcular el primer término con 310 dígitos, respuesta INF, es decir que después del término con 309 dígitos, la suma es muy grande para que sea calculada, ups eso significa pensar en otra forma de abordar el problema.
Empecé entonces haciendo una lista de los elementos a partir del número de dígitos y me encontré con la característica que me permitió determinar mi modelo. La cosa es que determinando el número de dígitos que debe tener un término específico de la serie de Fibonnacci se puede determinar que el primer término en tener un dígito más que el anterior esta 5 posiciones más adelante por ejemplo el término con 9 dígitos esta en la posición 40 y el término en con 10 dígitos esta en la posición 45, sin embargo cada 5 dígitos aumenta solo cuatro posiciones, es decir el término 14 esta en la posición 64, después de ese término vuelve a sumar 5 posiciones por cada dígito, pero la curiosidad se puede ver más fácilmente en la siguiente tabla
| # Dígitos | Posición | # Dígitos | Posición |
| 9 | 40 | 29 | 136 |
| 10 | 45 | 30 | 141 |
| 11 | 50 | 31 | 146 |
| 12 | 55 | 32 | 151 |
| 13 | 60 | 33 | 155 |
| 14 | 64 | 34 | 160 |
| 15 | 69 | 35 | 165 |
| 16 | 74 | 36 | 170 |
| 17 | 79 | 37 | 174 |
| 18 | 84 | +5=42 | +24=198 |
| 19 | 88 | +5=47 | +24=222 |
| 20 | 93 | +4=51 | +19=241 |
| 21 | 98 | +10=61 | +48=289 |
| 22 | 103 | +4=65 | +19=308 |
| 23 | 107 | +14=79 | +67=375 |
| 24 | 112 | +28=107 | +134=509 |
| 25 | 117 | +28=135 | +134=643 |
| 26 | 122 | ||
| 27 | 127 | ||
| 28 | 131 |
Encontré entonces ciertos patrones que permiten modelar en comportamiento de la série de Fibonacci con respecto, por lo menos al número de dígitos de cada término, el modelo es: el primer término con cinco dígitos más que el anterior se encuentra veinticuatro posiciones adelante, pero cada catorce dígitos más, aumenta solo cuatro posiciones lo que nos lleva que crear un modelo en el que cada 28 dígitos aumenta 134 posiciones.
Con esto fue muy fácil hacer un script con el que pudiera encontrar el primer término en tener más de 1000 dígitos (1003) y el primer estar más próximo a tener mil dígitos pero por debajo de mil (975), con esto y la aplicación lógica del modelo encontrado se llegó fácil y rápido a la respuesta.
CONCLUSIÓN:
Algunas veces vale más pensar en la pregunta que en como darle respuesta.