Döngüsel fark kümesi , benzersiz bir özelliğe sahip bir dizi pozitif tamsayıdır:
- Izin vermek
n
kümedeki en büyük tamsayı olmak. - Izin
r
vermek herhangi bir tamsayı (kümede mutlaka) 0'dan büyük ama eşit veya daha küçük olsunn/2
. - Izin
k
olmak çözümlerin sayısı için(b - a) % n = r
neredea
veb
setin herhangi üyeleridir. Her çözüm sıralı bir çifttir(a,b)
. (Modulo'nun bu sürümünün,n
birçok dilde yapılan uygulamaların aksine, ekleyerek negatif sayıları pozitif hale getirdiğini unutmayın .) - Son olarak, eğer sadece bu döngüsel bir fark kümesi ise, değeri
k
seçiminize bağlı değildirr
. Yani, tüm değerlerr
yukarıdaki uyum için aynı sayıda çözüm sunar.
Bu, aşağıdaki örnekle gösterilebilir:
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)
Her değerinin r
aynı sayıda çözümü vardır, bu durumda 3, bu yüzden bu döngüsel bir fark kümesidir.
Giriş
Girdi, pozitif tamsayıların bir listesi olacaktır. Bu bir dizi özellik olduğundan, bu giriş varsayıyorum değil sıralanmış. Sıfır olsa da n
, en azından bunun olduğunu varsayabilirsiniz .2
k
Çıktı
Set döngüsel bir fark kümesi ise programınız / fonksiyonunuz doğruluk değeri veya aksi takdirde bir falsey değeri vermelidir.
Test Durumları
Geçerli döngüsel fark setleri:
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
( kuralları farklı olmasına rağmen veri kaynağı )
Geçersiz döngüsel fark setleri:
1,2,3,4,20
57,3,5,7,17,35,38,49
3,4,5,9
14,10,8
b
ve a
aynı sayı ise (b-a)%n = 0
, ancak 0, çözüm aradığınız değerlerden biri değildir. Dolayısıyla, aynı sayıda olmaları konusunda açık bir yasak yok, ama asla olmayacaklar.
7 7 7
Geçersiz giriş olsaydı gerçekten tercih ederim . Bir set değerleri tekrarlamaz
7 7 7
başka bir kullanıcı tarafından istendi, ancak bir küme olmadığı için kaldırdım.
r
tarafından 0 < r <= max(input)/2
, bunun yerine 0 < r < max(input)
biz elde edebilirsiniz, çünkü r > max(input)/2
basitçe çıkarma çevirerek davaları r <= max(input)/2
durumlarda.
a
veb
aynı üyeyi (ille olmaka ≠ b
)?