Preparándome para un concurso

Hola a todos.
Me encuentro preparándome para un concurso de programación justo con Jose Manuel miembro de este foro hemos tenido algunos problemas en el manejo de tiempo de ejecución en algunos programas o tal vez tengamos mal nuestra lógica para responder algunos problemas en seguida expongo un problema y la solución que le dimos si alguien tiene otra solución seria grandioso ya Ezamudio me dio unas recomendaciones.

Algunos enteros se pueden representar como diferencia de dos enteros al cuadrado, por ejemplo 15 = 4^2- 1^2= 8^2- 7^2
Escribe un programa que determine la cantidad de formas distintas t en las que se puede escribir un
número entero n como diferencia de dos cuadrados a^2 - b^2 donde a ≥ b ≥ 0.

Entrada: Un número entero n tal que 0 ≤ n ≤ 1,000,000
Este es el codigo:

 

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de arterzatij

que pasa cuando...

veo que el tope de tu ciclo es la raiz cuadrada del numero introducido. Pero que pasa si el numero introducido es cero?

Imagen de arterzatij

por otro lado

si tu numero de entrada es solo 0 ≤ n ≤ 1,000,000

entonces no es necesario que realices validaciones cuando b > a dado que solo tendras numeros negativos con lo que estas tirando procesamiento a la basura... asi que tienes que hacer validaciones solo cuando a >= b

opino que tu ciclo debiera ser un poco mas como esto

 

tu mismo pusiste la respuesta en la edicion del ejercicio:

dos cuadrados a^2 - b^2 donde a ≥ b ≥ 0.