Advanced Collecting Device Controller ™ 에서 오랫동안 데이터를 수집했습니다 . 당신은 로그를 확인하고 공포에 뭔가 잘못되었다는 것을 발견합니다. 데이터에는 숫자의 마지막 비트 만 포함됩니다!
운 좋게도 시작 값을 알고 값이 빠르게 변하지 않습니다. 즉, 시작부터 거리를 찾아서 나머지를 복구 할 수 있습니다.
도전
모듈러스 N와 중간 값리스트 modulo가 주어지면 값이 변경된 양을 계산하는 프로그램이나 함수를 작성할 것 N입니다.
모든 숫자 쌍 사이의 변경 은 항상보다 작N/2 으므로 각 테스트 사례에 대해 하나의 유효한 답변 만 있습니다.
N선택한 형식으로 정수 > 2 및 값 목록이 입력으로 제공됩니다 . 입력은 STDIN 또는 명령 행 또는 함수 인수를 통해 제공 될 수 있습니다.
원래 값이 변경된 양의 단일 정수를 출력합니다. 출력은 STDOUT으로 인쇄되거나 리턴 될 수 있습니다.
규칙
- 프로그램은 거리와 모듈러스가 작을 때 작동해야합니다
2^20. - 다음과 같이 가정 할 수 있습니다.
N적어도3입니다.- 이 목록에는 2 개 이상의 값이 있습니다.
- 목록의 모든 값은 0 이상이고보다 작습니다
N. - 숫자의 모든 변경 사항이보다 적습니다
N/2.
- 다른 것은 유효하지 않은 입력이며 프로그램은 원하는 것을 할 수 있습니다.
- 이 정확한 목적을위한 표준 허점, 비표준 라이브러리 및 내장 기능은 금지되어 있습니다.
- 이것은 code-golf 이므로 바이트 단위의 가장 짧은 프로그램이 승리합니다.
테스트 사례 예
입력:
3
0 1 2 2 0 1 0 2 1 2 0 1 2 1 1
산출:
4
설명 (예시 값) :
Value mod 3: 0 1 2 2 0 1 0 2 1 2 0 1 2 1 1
Value: 0 1 2 2 3 4 3 2 1 2 3 4 5 4 4
입력:
10
5 2 8 9 5
산출:
-10
설명 (예시 값) :
Value mod 10: 5 2 8 9 5
Value: 15 12 8 9 5
유효하지 않은 입력 :
2
0 0 0 0 0
(너무 작은 계수)
6
2 5 4 2
(2와 5 사이의 너무 큰 변화)
:^;[5 2 8 9 5](\있습니까?