O esquema de compartilhamento secreto de Shamir é uma maneira simples de proteger um segredo, dividindo-o em várias partes necessárias para reconstruí-lo.
Sua tarefa é implementar a reconstrução do Compartilhamento Secreto de Shamir sobre o Campo Finito definido pelos primos 1928049029
. Se você tiver alguma dúvida sobre o que isso significa, basta perguntar ou ver Campo Finito e Aritmética de Campos Finitos na wikipedia (mais recursos abaixo).
Entrada
A entrada é feita usando stdin. Primeiro vem um número inteiro k
, depois as linhas k. Cada uma dessas linhas contém um par de números inteiros x y
que representam um segredo. Em outras palavras, f(x) = y
no polinômio original usado para construir os segredos.
O número de segredos dados é sempre suficiente para construir o segredo correspondente.
Resultado
Saída para mostrar o segredo reconstruído.
Exemplos
Entrada:
5
1 564797566
2 804114535
4 1354242660
6 1818201132
7 503769263
Resultado:
1234
Entrada:
7
1 819016192
2 1888749673
3 1737609270
4 365594983
5 1628804870
6 1671140873
7 492602992
Resultado:
456457856
Recursos
Campo finito Fonte: Wikipedia
Aritmética de campos finitos Fonte: Wikipedia
Polinômio de Lagrange Fonte: Wikipedia