java - sustraccion - Encuentre el número de formas de representar n como una suma de dos enteros con límites
suma y resta en la recta numerica ejercicios (1)
Estoy jugando codefight, pero realmente estoy atrapado en el siguiente problema eficiente.
Problema :
Dado enteros n, l y r, encuentre el número de maneras de representar n como una suma de dos enteros A y B tales que l ≤ A ≤ B ≤ r.
Ejemplo :
Para n = 6, l = 2 yr = 4, la salida debe ser countSumOfTwoRepresentations2 (n, l, r) = 2. Hay solo dos formas de escribir 6 como A + B, donde 2 ≤ A ≤ B ≤ 4: 6 = 2 + 4 y 6 = 3 + 3.
Aquí está mi código. Pasa todas las pruebas unitarias pero falla en las ocultas. ¿Puede alguien dirigirme de alguna manera? Gracias por adelantado.
public static int countSumOfTwoRepresentations2(int n, int l, int r) {
int nrOfWays = 0;
for(int i=l;i<=r;i++)
{
for(int j=i;j<=r;j++)
{
if(i+j==n)
nrOfWays++;
}
}
return nrOfWays;
}
Bueno, no hay necesidad de hacer cálculos tan grandes ... Es fácil de calcular:
public static int count(int n, int l, int r) {
if (l > n/2)
return 0;
return Math.min(n/2 - l, r - n/2) + ((n%2 == 1) ? 0 : 1);
}
Pasó todas mis pruebas hasta ahora. Para positivos y negativos también.