Recientemente se me presentó la siguiente igualdad n=[w2d+a]⋅[h2d+b] donde todas las variables participantes son enteros no negativos, y […] es la operación de tomar la parte entera (por ejemplo [6.789]=6 ). El problema es expresar d es decir, resolver esta igualdad para d y obtener una solución en forma de f(a,b,w,h,n)≤d≤F(a,b,w,h,n) o alguna forma simular que permita determinar el rango de valores de d por valores dados de a,b,w,h,n en tiempo constante, algorítmicamente hablando.
Sin duda, si no fuera por estos corchetes, el problema sería pan comido: n=w2d+a⋅h2d+b=wh(2d+a)(2d+b)=wh4d2+2d(a+b)+ab 4d2+2d(a+b)+ab−whn=0 d=−14(a+b)±14√(a+b)2−4ab+4hwn Pero desgraciadamente [x][y]≠[xy] . ¿Hay alguna manera de tratar la operación con enteros?
P.D. En el problema original bastaría con encontrar el mayor d .
Siguiendo la sugerencia de la respuesta de David Kleiman, tengamos [w2d+a]=w2d+a−r1 y [h2d+b]=h2d+b−r2 , donde ri∈[0,1) . Además, deja que q=2d para mayor comodidad. Ahora la igualdad toma forma: n=(wq+a−r1)⋅(hq+b−r2) Ahora vamos a bastardear esta hermosa fórmula a lo grande eliminando paréntesis, liquidando fracciones y reuniendo coeficientes de las potencias de q :
q2(n−r1r2)+q((n−r1r2)(a+b)+r1h+r2w)+abn−wh+r1ha+r2wb−r1r2ab=0
Parecía conveniente introducir denotaciones m=n−r1r2 y c=a+b Así que..:
q2m+q(mc+r1h+r2w)+abn−wh+r1ha+r2wb−r1r2ab=0
Resolviendo la ecuación cuádrica para q y eligiendo el signo positivo obtenemos: q=−(mc+r1h+r2w)+√D2m, donde D=(mc+r1h+r2w)2−4m(abn−wh+r1ha+r2wb−r1r2ab). Juntando todo esto tenemos: q=−((n−r1r2)(a+b)+r1h+r2w)2(n−r1r2)+√((n−r1r2)(a+b)+r1h+r2w)2−4(n−r1r2)(abn−wh+r1ha+r2wb−r1r2ab)2(n−r1r2) Entonces... ¿cómo maximizarlo?