Set perbedaan siklik adalah seperangkat bilangan bulat positif dengan properti unik:
- Membiarkan
n
menjadi bilangan bulat terbesar di set. - Membiarkan
r
bilangan bulat apa pun (tidak harus di set) lebih besar dari 0 tetapi kurang dari atau sama dengann/2
. - Membiarkan
k
menjadi sejumlah solusi ke(b - a) % n = r
manaa
danb
ada anggota set. Setiap solusi adalah pasangan yang dipesan(a,b)
. (Juga perhatikan bahwa versi modulo ini membuat angka negatif menjadi positif dengan menambahkannyan
, tidak seperti implementasi dalam banyak bahasa.) - Akhirnya, jika dan hanya jika ini adalah set perbedaan siklik, nilai
k
tidak tergantung pada pilihan Andar
. Yaitu, semua nilair
memberikan jumlah solusi yang sama untuk kongruensi di atas.
Ini dapat diilustrasikan dengan contoh berikut:
Cyclic difference set: {4,5,6,8,9,11}
0 < r <= 11/2, so r = 1,2,3,4,5
r=1: (4,5) (5,6) (8,9)
r=2: (4,6) (6,8) (9,11)
r=3: (5,8) (6,9) (8,11)
r=4: (4,8) (5,9) (11,4) since (4-11)%11=(-7)%11=4
r=5: (4,9) (6,11) (11,5)
Setiap nilai r
memiliki jumlah solusi yang sama, 3 dalam hal ini, jadi ini adalah set perbedaan siklik.
Memasukkan
Input akan menjadi daftar bilangan bulat positif. Karena ini adalah properti yang disetel, anggap bahwa input tidak diurutkan. Anda dapat menganggap itu n
setidaknya 2
, meskipun k
mungkin nol.
Keluaran
Program / fungsi Anda harus menampilkan nilai kebenaran jika set adalah set perbedaan siklik, atau nilai falsey sebaliknya.
Uji Kasus
Set perbedaan siklik yang valid:
10,12,17,18,21
7,5,4
57,1,5,7,17,35,38,49
1,24,35,38,40,53,86,108,114,118,135,144,185,210,254,266,273
16,3,19,4,8,10,15,5,6
8,23,11,12,15,2,3,5,7,17,1
( sumber data , meskipun konvensi mereka berbeda)
Set perbedaan siklik tidak valid:
1,2,3,4,20
57,3,5,7,17,35,38,49
3,4,5,9
14,10,8
b
dan a
adalah angka yang sama (b-a)%n = 0
, tetapi 0 bukanlah salah satu nilai yang Anda cari solusi. Jadi tidak ada larangan eksplisit bahwa mereka memiliki nomor yang sama, tetapi mereka tidak akan pernah melakukannya.
7 7 7
input tidak valid. Satu set tidak mengulangi nilai
7 7 7
telah diminta oleh pengguna lain, tetapi saya telah menghapusnya karena itu bukan set.
r
oleh 0 < r <= max(input)/2
, melainkan 0 < r < max(input)
karena kita dapat memperoleh r > max(input)/2
kasus dengan hanya membalik pengurangan dalam r <= max(input)/2
kasus.
a
danb
menjadi anggota yang sama (tidak harusa ≠ b
)?