Você deve escrever um programa ou função que use um número inteiro não negativo Ncomo entrada e produza ou retorne dois números inteiros (negativo, zero ou positivo) Xe Y.
Os inteiros são entendidos no sentido matemático, pois existem infinitamente muitos deles.
A função implementada deve ser bijetiva . Isso significa que, para cada um N, deve gerar um X Ypar diferente e cada X Ypar deve ser emitido para alguma entrada, Nou seja, todos os seguintes pares devem ser emitidos para alguns 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 │
└─────┴─────┴────┴────┴────┘
...
Observe que U Ve V Usão pares diferentes se U!=V.
Detalhes
- Se o seu idioma não suportar números inteiros arbitrariamente grandes, tudo bem, mas seu algoritmo deve funcionar com um tipo de dados inteiro arbitrariamente grande. Seu código ainda deve suportar valores de entrada por pelo menos
2^31-1. - Se você optar por imprimir ou retornar a saída como sequência, não serão permitidos sinais
0ou+sinais à esquerda . Caso contrário, a representação inteira padrão do seu idioma está correta.
Exemplo
Se a tarefa seria fazer uma função bijective tomando um número inteiro não negativo Ne saída de um número inteiro Xuma solução poderia ser a função
if (input mod 2 == 0) return N/2 else return -(N+1)/2,
implementado em algum idioma. Esta função retorna X = 0 -1 1 -2 2...para N = 0 1 2 3 4....

10=>11 12, 9=>10 11isso é inválido porque 11 é repetido?