, если x и y и n являются одинаковыми типами данных.
n = ((x + y)*(x + y) + x - y)/2...
когда x и y находятся рядом с типом данных :: max n переполнится, и вы потеряете информацию и не сможете восстановить x и y.
Если, с другой стороны, если x и y всегда находятся в диапазоне, скажем, 0-FOO
n = Foo * x + y
может быть восстанавливаемым хешем при условии, что n не переполнилось
n % Foo
даст вам y . Как только y станет известно (n-y) / Foo даст вам x