Вы должны написать программу или функцию, которая принимает неотрицательное целое число в Nкачестве входных данных и выводит или возвращает два целых числа (отрицательное, нулевое или положительное) Xи Y.
Целые числа подразумеваются в математическом смысле, поскольку их бесконечно много.
Реализованная функция должна быть биективной . Это означает, что для каждого Nон должен вывести отдельную X Yпару, и каждая X Yпара должна быть выведена для некоторого ввода, Nто есть все следующие пары должны быть выведены для некоторого N:
...
┌─────┬─────┬────┬────┬────┐
│-2 -2│-2 -1│-2 0│-2 1│-2 2│
├─────┼─────┼────┼────┼────┤
│-1 -2│-1 -1│-1 0│-1 1│-1 2│
├─────┼─────┼────┼────┼────┤
... │0 -2 │0 -1 │0 0 │0 1 │0 2 │ ...
├─────┼─────┼────┼────┼────┤
│1 -2 │1 -1 │1 0 │1 1 │1 2 │
├─────┼─────┼────┼────┼────┤
│2 -2 │2 -1 │2 0 │2 1 │2 2 │
└─────┴─────┴────┴────┴────┘
...
Обратите внимание, что U Vи V Uразные пары, если U!=V.
Детали
- Если ваш язык не поддерживает произвольно большие целые числа, это нормально, но ваш алгоритм должен работать с произвольно большим целочисленным типом данных. Ваш код должен по-прежнему поддерживать входные значения по крайней мере
2^31-1. - Если вы решите напечатать или вернуть вывод в виде строки, начальные
0символы или+знаки не допускаются. В противном случае стандартное целочисленное представление вашего языка в порядке.
пример
Если задача состоит в том, чтобы сделать биективную функцию с неотрицательным целым числом Nи вывести одно целое число, Xрешением может быть функция
if (input mod 2 == 0) return N/2 else return -(N+1)/2,
реализовано на каком-то языке. Эта функция возвращает X = 0 -1 1 -2 2...для N = 0 1 2 3 4....

10=>11 12, 9=>10 11, это неверно, потому что 11 повторяется?