Anda harus menulis sebuah program atau fungsi yang menggunakan integer non-negatif N
sebagai input dan output atau mengembalikan dua integer (negatif, nol atau positif) X
dan Y
.
Bilangan bulat dimaksudkan dalam arti matematika karena ada banyak dari mereka.
Fungsi yang diimplementasikan harus bijective . Ini berarti bahwa untuk setiap pasangan harus N
mengeluarkan X
Y
pasangan yang berbeda dan setiap X
Y
pasangan harus dikeluarkan untuk beberapa input N
yaitu 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 V
dan V U
adalah 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
0
atau+
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 N
dan output satu integer X
solusi 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 11
apakah ini tidak valid karena 11 diulang?