Set perbedaan siklik adalah seperangkat bilangan bulat positif dengan properti unik:
- Membiarkan
nmenjadi bilangan bulat terbesar di set. - Membiarkan
rbilangan bulat apa pun (tidak harus di set) lebih besar dari 0 tetapi kurang dari atau sama dengann/2. - Membiarkan
kmenjadi sejumlah solusi ke(b - a) % n = rmanaadanbada 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
ktidak tergantung pada pilihan Andar. Yaitu, semua nilairmemberikan 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 rmemiliki 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 nsetidaknya 2, meskipun kmungkin 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
bdan aadalah 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 7input tidak valid. Satu set tidak mengulangi nilai
7 7 7telah diminta oleh pengguna lain, tetapi saya telah menghapusnya karena itu bukan set.
roleh 0 < r <= max(input)/2, melainkan 0 < r < max(input)karena kita dapat memperoleh r > max(input)/2kasus dengan hanya membalik pengurangan dalam r <= max(input)/2kasus.
adanbmenjadi anggota yang sama (tidak harusa ≠ b)?