Eine zyklische Differenzmenge ist eine Menge positiver Ganzzahlen mit einer eindeutigen Eigenschaft:
- Sei
n
die größte Ganzzahl in der Menge. - Sei
r
eine ganze Zahl (nicht unbedingt in der Menge) größer als 0, aber kleiner oder gleichn/2
. - Geben Sie
k
die Anzahl der Lösungen an,(b - a) % n = r
für diea
und fürb
die Sie Mitglieder der Gruppe sind. Jede Lösung ist ein geordnetes Paar(a,b)
. (Beachten Sie auch, dass diese Version von modulo negative Zahlen positiv macht, indem sie hinzugefügtn
wird, im Gegensatz zu den Implementierungen in vielen Sprachen.) - Wenn dies eine zyklische Differenzmenge ist,
k
hängt der Wert von nicht von Ihrer Wahl von abr
. Das heißt, alle Werte vonr
geben die gleiche Anzahl von Lösungen für die obige Kongruenz an.
Dies kann anhand des folgenden Beispiels veranschaulicht werden:
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)
Jeder Wert von r
hat die gleiche Anzahl von Lösungen, in diesem Fall 3, so dass dies eine zyklische Differenzmenge ist.
Eingang
Die Eingabe ist eine Liste positiver Ganzzahlen. Da es sich um eine Set-Eigenschaft handelt, wird davon ausgegangen, dass die Eingabe nicht sortiert ist. Sie können davon ausgehen , dass n
zumindest 2
, wenn auch k
Null sein kann.
Ausgabe
Ihr Programm / Ihre Funktion sollte einen Wahrheitswert ausgeben, wenn es sich bei dem Satz um einen zyklischen Differenzsatz handelt, oder einen Falschwert, wenn dies nicht der Fall ist.
Testfälle
Gültige zyklische Differenzmengen:
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
( Datenquelle , obwohl ihre Konvention unterschiedlich ist)
Ungültige zyklische Differenzsätze:
1,2,3,4,20
57,3,5,7,17,35,38,49
3,4,5,9
14,10,8
b
und a
sind die gleiche Zahl, (b-a)%n = 0
aber 0 ist nicht einer der Werte, für die Sie nach Lösungen suchen. Es gibt also kein ausdrückliches Verbot, dass sie dieselbe Anzahl haben, aber sie werden es niemals sein.
7 7 7
ungültige Eingabe war. Ein Satz wiederholt keine Werte
7 7 7
wurde von einem anderen Benutzer angefordert, aber ich habe es entfernt, weil es kein Satz ist.
r
durch 0 < r <= max(input)/2
, sondern 0 < r < max(input)
weil wir erhalten r > max(input)/2
durch einfaches Umdrehen der Subtraktion in Fällen , r <= max(input)/2
Fällen.
a
undb
darf das gleiche Mitglied sein (nicht unbedingta ≠ b
)?