순환 차이 집합 은 고유 한 속성을 가진 양의 정수 집합입니다.
- 하자
n
세트의 가장 큰 정수. - 하자
r
0보다 큰 미만 (설정에서 반드시)의 정수를 수거나 같음n/2
. - 하자
k
될 솔루션의 수 에(b - a) % n = r
어디a
와b
집합의 구성원입니다. 각 솔루션은 주문 쌍(a,b)
입니다. (또한이 버전의 모듈로는n
많은 언어로 구현되는 것과 달리 음수를 더함으로써 양수를 만듭니다 .) - 마지막으로 이것이 주기적 차이 집합 인 경우에만의 값은 선택한 값에
k
따라 달라지지 않습니다r
. 즉, 모든 값은r
위의 합동에 대해 동일한 수의 솔루션을 제공합니다.
다음 예제를 통해이를 설명 할 수 있습니다.
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)
의 각 값은 r
같은 수의 솔루션 을 갖습니다.
입력
입력은 양의 정수 목록입니다. 이 속성은 설정 속성이므로 입력이 정렬 되지 않았다고 가정합니다 . 0 일 수도 있지만 n
적어도 이라고 가정 할 수 있습니다.2
k
산출
세트가 주기적 차이 세트이면 프로그램 / 함수는 정확한 값을, 그렇지 않으면 거짓 값을 출력해야합니다.
테스트 사례
유효한 순환 차이 세트 :
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
( 컨벤션이 다르지만 데이터 소스 )
잘못된 순환 차이 세트 :
1,2,3,4,20
57,3,5,7,17,35,38,49
3,4,5,9
14,10,8
@EriktheOutgolfer 경우
—
PhiNotPi
b
와 a
다음, 같은 수 있습니다 (b-a)%n = 0
, 그러나 공은 솔루션을 찾고있는 값 중 하나가 아닙니다. 따라서 같은 숫자라는 명백한 금지는 없지만 결코 그렇게 할 수는 없습니다.
7 7 7
유효하지 않은 입력 이라면 정말 선호합니다 . 세트는 값을 반복하지 않습니다
@TonHospel 완료했습니다.
—
PhiNotPi
7 7 7
다른 사용자가 요청했지만 세트가 아니기 때문에 제거했습니다.
골프 아이디어 :에 구속
—
JungHwan Min 2019
r
될 필요는 없지만 0 < r <= max(input)/2
, 대신 에 빼기를 뒤집기 만하면 케이스를 0 < r < max(input)
얻을 수 있기 때문 입니다. r > max(input)/2
r <= max(input)/2
a
있으며b
반드시 그런 것은a ≠ b
아닐까요?