¿Cómo resolver SPOJ.com – Problema NITK06? ¿Cuál es la lógica de la pregunta en detalle?

el primer no se puede reducir a 0 solo restándolo del segundo no y restándolo de sí mismo, de modo que el segundo no – primero no> = 0, el nuevo segundo no se puede reducir a 0 ahora solo restándolo del tercero y de sí mismo … .. es decir

si la secuencia es a, b, c, d, e ……

para que a sea 0 entonces ba> = 0

nueva secuencia 0, ba, c, d, e …

para ba o el nuevo segundo elemento sea 0 c- (ba)> = 0 y así sucesivamente …

implementar utilizando la fórmula recursiva simple ar [i] = ar [i] -ar [i-1]

y comprobándolo con una bandera x

CÓDIGO C ++: –

#include

#define ll long long int

#define sf (n) scanf (“% lld”, & (n))

#define pf (n) printf (“% lld \ n”, (n))

#define test long long t; scanf (“% lld”, & (t)); while (t–)

usando el espacio de nombres estándar;

int main ()

{

ll n, i, j, k, x;

prueba

{

sf (n);

ll ar [n], a [n];

para (i = 0; i <n; i ++)

sf (ar [i]);

x = 0;

para (i = 1; i <n; i ++)

{

ar [i] – = ar [i-1];

si (ar [i] <0)

{

x ++;

rotura;

}

}

if (x == 0 && ar [n-1] == 0)

printf (“SÍ \ n”);

sino printf (“NO \ n”);

}

}

Esta pregunta es un problema ad-hoc en la sección de problemas clásicos de spoj y hackerearth en spoj. Esto tiene un límite de tiempo de 0.5–1 seg. Esta pregunta también tiene una pregunta de prueba débil ya que con una lógica incorrecta pude pasar 4 casos de prueba en hackerearth. Pero finalmente resolvió este problema en 0.00 segundos, lo cual fue increíble. El problema está aquí

#include

usando el espacio de nombres estándar;

largo largo a [100005];

int main ()

{

int t;

scanf (“% d”, & t);

mientras que (t–)

{

int n;

largo largo mul = 0;

cin >> n;

para (int i = 0; i

{

scanf (“% lld”, y a [i]);

}

para (int i = 0; i

{

mul = a [i] -mul;

}

si (mul == 0)

{

printf (“SÍ \ n”);

}

más

{

printf (“NO \ n”);

}

}

devuelve 0;

}

La pregunta es bastante directa. Dada una matriz de números, se le pide que averigüe si es posible reducir esta matriz a solo ceros restando 1 de [i] y a [i + 1] repetidamente.

Un caso de prueba que me ayudó a resolver esto fue: 1 2 2 2 1
La respuesta es sí.

Por lo tanto, un enfoque directo sería ejecutar a través de la matriz, siempre que un [i] no sea cero y continúe restando 1 de a [i] y a [i + 1]. Si ambos resultan ser cero, continúe más allá de i + 2. Si solo el primero es cero, proceda más lejos pero desde i + 1. Sin embargo, si un [i + 1] es 0 y no un [i], entonces la respuesta es No.