Eine zyklische Differenzmenge ist eine Menge positiver Ganzzahlen mit einer eindeutigen Eigenschaft:
- Sei
ndie größte Ganzzahl in der Menge. - Sei
reine ganze Zahl (nicht unbedingt in der Menge) größer als 0, aber kleiner oder gleichn/2. - Geben Sie
kdie Anzahl der Lösungen an,(b - a) % n = rfür dieaund fürbdie 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ügtnwird, im Gegensatz zu den Implementierungen in vielen Sprachen.) - Wenn dies eine zyklische Differenzmenge ist,
khängt der Wert von nicht von Ihrer Wahl von abr. Das heißt, alle Werte vonrgeben 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 rhat 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 nzumindest 2, wenn auch kNull 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
bund asind die gleiche Zahl, (b-a)%n = 0aber 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 7ungültige Eingabe war. Ein Satz wiederholt keine Werte
7 7 7wurde von einem anderen Benutzer angefordert, aber ich habe es entfernt, weil es kein Satz ist.
rdurch 0 < r <= max(input)/2, sondern 0 < r < max(input)weil wir erhalten r > max(input)/2durch einfaches Umdrehen der Subtraktion in Fällen , r <= max(input)/2Fällen.
aundbdarf das gleiche Mitglied sein (nicht unbedingta ≠ b)?