Cómo resolver UVA 10407

El problema es: dada una lista de números, genera un divisor D tal que el resto tras la división por D sea el mismo para todos los números.

Otra forma de expresarlo es que se le dan [matemáticas] x_1, x_2,…, x_n [/ matemáticas] y se le pide que encuentre [matemáticas] D [/ matemáticas] de modo que

[matemáticas] x_1 \ equiv x_2 \ equiv x_3… \ equiv x_n \ pmod {D} [/ matemáticas]

Si dos números son módulos equivalentes [matemática] D [/ matemática], entonces su diferencia es un múltiplo de [matemática] D [/ matemática].

Eso sugiere el siguiente enfoque: calcular las diferencias entre pares de números y tomar el MCD de esas diferencias. Cada diferencia entre pares será un múltiplo de ese MCD (que bien puede ser 1), por lo que todos los números serán congruentes (es decir, tendrán el mismo resto).

Si calculamos la diferencia para cada par, serían pares [matemáticos] O (n ^ 2) [/ matemáticos], lo que parece indeseable. Por lo tanto, nos gustaría demostrar que esto es innecesario. Suponga que [math] y = \ gcd (x_1 – x_2, x_2 – x_3) [/ math]. Luego, por las propiedades de GCD, [math] y = \ gcd (x_1 – x_2 + (x_2 – x_3), x_2 – x_3) = \ gcd (x_1 – x_3, x_2 – x_3) [/ math]. Por lo tanto, podemos considerar solo pares adyacentes al calcular nuestras diferencias, y terminamos con el mismo MCD como si hiciéramos todos los pares.