Supongamos que al principio hay un documento en blanco y se escribe una letra "a" en él. En los siguientes pasos, solo se pueden utilizar las tres funciones de "seleccionar todo", "copiar" y "pegar".
Encuentra el número mínimo de pasos para alcanzar al menos 100,000 a's (cada una de las tres operaciones de "seleccionar todo", "copiar" y "pegar" se cuenta como un paso). Si el número de destino no está especificado, y quiero obtener la cantidad exacta de "a"s, ¿existe una fórmula general?
Esta es una pregunta fascinante. Mi amigo y yo la discutimos durante mucho tiempo ese día, pero no logramos resolverla.
Lo que comencé a pensar fue: Si los pasos de "seleccionar todo", "copiar" y "pegar" se cuentan aproximadamente como un paso. Cada paso hace que el número ×2, por lo que es una progresión geométrica con una razón común de 2.
Sea an100000(n∈N), donde a1=1.
De acuerdo con la fórmula general de progresión geométrica: an=a1×qn−1
Podemos obtener: n=17
Entonces, si las tres operaciones de "seleccionar todo", "copiar" y "pegar" se cuentan cada una como un paso, hay un total de 17×3=51 pasos
Pero esto ignora un problema: ¿podemos pegar todo el tiempo?
Entonces, esto parece ser un problema de optimización interesante, y necesitamos encontrar una estrategia para minimizar el número de pasos de una "a" a cien mil "a"s.
-
Seleccionar todo + copiar + pegar: Estas tres operaciones duplican el número de "a"s. Si actualmente hay n "a"s, entonces habrá 2n "a"s después de la operación.
-
Pegar: Esta operación agregará el número de "a"s igual al contenido del portapapeles. Si hay k "a"s en el portapapeles, entonces habrá (n+k) "a"s después de la operación.
Definimos una función f(n) que representa el número mínimo de pasos requeridos para alcanzar n "a"s. Inicialmente, tenemos una "a", así que f(1)=0.
Si elegimos la operación de duplicar, f(2n)=f(n)+3.
Si elegimos la operación de pegar, entonces f(n+k)=f(n)+1, donde k es el número de "a"s en el portapapeles.
Entonces comencé a confundirme porque me di cuenta de que parecía que cada paso enfrentaba una optimización, y parecía ser complicado. Empecé a usar la comparación de funciones para obtener n=14 como el valor mínimo, pero me di cuenta de que solo se optimizaba una vez.