En CyM la forma de lograr programas más rápidos suele ser usar más matemática. ;-)
Veamos. Hay un criterio para ecuaciones que nos sirve de guía general:
Si tenemos tantas ecuaciones como incógnitas, la solución está determinada.
Otra forma del criterio es:
Hay tantos grados de libertad como ecuaciones menos incógnitas.
En realidad la cosa es mucho más complicada y condicional, pero nos sirve de guía. Acá tenemos
(1)
\begin{equation} x^2 + xy + y^2 = N \end{equation}
que es 1 ecuación con 2 incógnitas o variables ($x$ e $y$). Lo que se espera según el criterio es que para cada valor que le demos a $x$, como queda 1 ecuación con 1 incógnita, haya una solución. En realidad, como es “una cuadrática” (tal cual decís) en general hay 2 soluciones. Pero resulta que el problema dice que $x$ e $y$ tienen que ser enteros. Entonces ahí no siempre va a haber solución. Todo esto son cosas que te pueden pasar por la cabeza, ideas. Que acá pueden funcionar o no.
Pero con estas ideas en mente surge lo que dice Tavo92: puede ser optimizada si se despeja una variable/incógnita de la ecuación.
Si sabés la fórmula de la cuadrática, bien, despejás, te fijás si da entero, y sumás 1 al contador. (Lo único delicado de esto es que al hacer cuentas en punto flotante hay problemas de precisión, y se nos puede escapar una solución en el camino, o contar una de más…)
Si no sabés la fórmula, no importa. Fijate: para cada $x$, ¿cuántos $y$ cumplen la ecuación? ($N$ fijo) Quizás ninguno, porque tiene que ser entero. ¿Puede haber 2 o más? Y, veamos. Supongamos que
(2)
\begin{eqnarray} x^2 + xa + a^2 & = & N \\ x^2 + xb + b^2 & = & N \end{eqnarray}
Pero entonces
(3)
\begin{eqnarray} x^2 + xa + a^2 & = & x^2 + xb + b^2 \\ xa + a^2 & = & xb + b^2 \\ xa - xb + a^2 - b^2 & = & 0 \\ x(a - b) + (a+b)(a - b) & = & 0 \\ (x+a+b)(a - b) & = & 0 \\ \end{eqnarray}
Entonces o bien $a = b$, o sea es la misma solución, o bien $x+a+b = 0$. Pero el enunciado dice que tienen que ser positivos, así que no puede ser. :-)
O sea que para cada $x$ hay a lo sumo un $y$. El problema es ¿cómo encontrarlo sin usar un ciclo, y sin saber la fórmula de la cuadrática? Eso se los dejo para pensar. Pero les doy una pista: como $x$ e $y$ son positivos, es fácil ver que si uno crece el otro decrece. Y los ciclos van de 1 en 1. Pueden ir para arriba, pueden ir para abajo. Vale usar otras condiciones de parada, por ejemplo desigualdades.