Problema: Dado el resumen, encuentra el número de páginas n que tiene el libro.
Ejemplo Si la entrada es resumen=25, entonces la salida debe ser n=17: Los números del 1 al 17 tienen 25 dígitos en total: 1234567891011121314151617.
Todas las entradas serán válidas.
Mi solución actual
function amountOfPages(summary){ let n=1; let arrKc=[1] while((arrKc.join('').toString().length)!=summary){ arrKc.push( n.toString()) n++ } return n }Todas las pruebas pasan pero aparece un error de tiempo de espera como se muestra a continuación
Aquí está mi código,
Veo un patrón aquí para encontrar el conteo de dígitos
9 + 9 * 10 power 1 * 2 + 9 * 10 power 2 * 3 + ...+ 9 * 10 power n-1 * n Mi solución se basa en el patrón anterior
function initialLoad() { document.getElementById("outcome").innerHTML = "Answer: "+ amountOfPages(25); } function amountOfPages(summary) { var n = summary; var totalNumbersSoFar = 0; var pagesSoFar = 0; var ninthDigit = "9"; while (parseInt(ninthDigit) < (n / ninthDigit.length)) { var numbersInRange = Math.pow(10, ninthDigit.length - 1) * 9; pagesSoFar += numbersInRange * ninthDigit.length; n -= numbersInRange; totalNumbersSoFar += numbersInRange; ninthDigit += "9"; }; return ((summary - pagesSoFar) / ninthDigit.length) + totalNumbersSoFar; }; <HTML> <HEAD> </HEAD> <BODY id="outcome" onload="initialLoad()"> <h1> </h1> </BODY> </HTML>