El esquema de intercambio de secretos de Shamir es una forma simple de proteger un secreto dividiéndolo en varias partes necesarias para reconstruirlo.
Su tarea es implementar la reconstrucción de Shamir's Secret Sharing sobre el campo finito definido por el primo 1928049029
. Si tiene alguna duda sobre lo que esto significa, solo pregunte o vea Campo finito y Aritmética de campo finito en wikipedia (más recursos a continuación).
Entrada
La entrada se realiza usando stdin. Primero viene un número entero k
, luego siguen las líneas k. Cada una de estas líneas contiene un par de enteros x y
que representan un secreto. En otras palabras, f(x) = y
en el polinomio original que se utilizó para construir los secretos.
El número de secretos dados siempre es suficiente para construir el secreto correspondiente.
Salida
Salida para stdout el secreto reconstruido.
Ejemplos
Entrada:
5
1 564797566
2 804114535
4 1354242660
6 1818201132
7 503769263
Salida:
1234
Entrada:
7
1 819016192
2 1888749673
3 1737609270
4 365594983
5 1628804870
6 1671140873
7 492602992
Salida:
456457856
Recursos
Campo finito Fuente: Wikipedia
Aritmética de campo finito Fuente: Wikipedia
Polinomio de Lagrange Fuente: Wikipedia