Anda harus menulis sebuah program atau fungsi yang menggunakan integer non-negatif Nsebagai input dan output atau mengembalikan dua integer (negatif, nol atau positif) Xdan Y.
Bilangan bulat dimaksudkan dalam arti matematika karena ada banyak dari mereka.
Fungsi yang diimplementasikan harus bijective . Ini berarti bahwa untuk setiap pasangan harus Nmengeluarkan X Ypasangan yang berbeda dan setiap X Ypasangan harus dikeluarkan untuk beberapa input Nyaitu semua pasangan berikut harus dikeluarkan untuk beberapa 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 │
└─────┴─────┴────┴────┴────┘
...
Perhatikan bahwa U Vdan V Uadalah pasangan yang berbeda jika U!=V.
Detail
- Jika bahasa Anda tidak mendukung bilangan bulat besar yang sewenang-wenang, itu bagus, tetapi algoritme Anda harus bekerja dengan tipe data bilangan bulat besar yang sewenang-wenang. Kode Anda setidaknya harus mendukung nilai input
2^31-1. - Jika Anda memilih untuk mencetak atau mengembalikan output sebagai string, tidak ada tanda
0atau+tanda-tanda yang diizinkan. Kalau tidak, representasi integer standar bahasa Anda baik-baik saja.
Contoh
Jika tugasnya adalah membuat fungsi bijective mengambil integer non-negatif Ndan output satu integer Xsolusi bisa menjadi fungsi
if (input mod 2 == 0) return N/2 else return -(N+1)/2,
diimplementasikan dalam beberapa bahasa. Fungsi ini kembali X = 0 -1 1 -2 2...untuk N = 0 1 2 3 4....

10=>11 12, 9=>10 11apakah ini tidak valid karena 11 diulang?