È necessario scrivere un programma o una funzione che accetta un numero intero non negativo Ncome input e restituisce o restituisce due numeri interi (negativo, zero o positivo) Xe Y.
I numeri interi sono intesi in senso matematico in quanto ce ne sono infiniti.
La funzione implementata deve essere biiettiva . Ciò significa che per ogni Nuscita deve essere emessa una X Ycoppia diversa e ogni X Ycoppia deve essere emessa per alcuni input, Novvero tutte le seguenti coppie dovrebbero essere emesse per alcuni 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 │
└─────┴─────┴────┴────┴────┘
...
Si noti che U Ve V Usono coppie diverse se U!=V.
Dettagli
- Se la tua lingua non supporta numeri interi arbitrariamente grandi, va bene, ma l'algoritmo dovrebbe funzionare con un tipo di dati intero arbitrariamente grande. Il tuo codice dovrebbe comunque supportare i valori di input per almeno
2^31-1. - Se si sceglie di stampare o restituire l'output come stringa, non sono consentiti segni
0o+segni iniziali. Altrimenti la rappresentazione intera standard della tua lingua va bene.
Esempio
Se il compito fosse quello di fare una funzione biiettiva prendendo un numero intero non negativo Ne produrre un numero intero, la Xsoluzione potrebbe essere la funzione
if (input mod 2 == 0) return N/2 else return -(N+1)/2,
implementato in alcune lingue. Questa funzione ritorna X = 0 -1 1 -2 2...per N = 0 1 2 3 4....

10=>11 12, 9=>10 11questo non è valido perché 11 viene ripetuto?