Si el número dado n se factoriza como
[matemáticas] n = 2 ^ a5 ^ bm [/ matemáticas]
donde m no es divisible por 2 o 5. Ahora podemos simplificar el problema para resolver solo por m . El múltiplo final cero uno debe tener potencias iguales de 2 y 5 en su factorización. De lo contrario, el último dígito antes de los ceros finales será 2, 4, 5, 6 u 8. Entonces, si el múltiplo cero más pequeño de m es q, y c = max ( a, b ), entonces el múltiplo cero más pequeño de n es [matemáticas] N = 10 ^ cq [/ matemáticas].
A continuación, intentaré esbozar un algoritmo para la parte m . Queremos encontrar un conjunto de potencias distintas de 10 para que su suma sea divisible por m . Entonces podemos encontrar los restos que quedan por cada potencia de 10. Luego tenemos que elegir esas potencias para que sus restos sumen un múltiplo de m . Como ejemplo, echemos un vistazo a 7. Los restos que quedan 1, 10, 100, … son 1, 3, 2, 6, 4, …. Podemos ver que 1 + 6 = 7. Por lo tanto, 1001 es un múltiplo de 7. Este paso se puede realizar mediante programación dinámica haciendo un seguimiento de los posibles restos y sumas restantes después de cada potencia de diez.