아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

달과 해

시간 제한1초메모리 제한512 MB

요약
A_i를 [-100000, 100000] 범위의 다른 정수로 바꿨을 때 N번 차분한 결과의 유일한 원소가 235813의 배수가 되는 인덱스 i의 개수를 센다.
난이도

어려움10점 중 8점

유형
수학, 조합론, 정수론, 구현
정답자
아직 제출이 없습니다

문제

정수로 이루어진 비어 있지 않은 수열 SS와 양의 정수 KK가 있다. 함수 moon()moon()과 sun()sun()은 다음과 같이 정의된다.

moon(S1…∣S∣)={Sif ∣S∣=1[S2−S1,S3−S2,…,S∣S∣−S∣S∣−1]if ∣S∣>1moon\left(S_{1\dots|S|}\right) = \begin{cases} S & \text{if } |S| = 1 \\ \left[ S_2 - S_1, S_3 - S_2, \dots , S_{|S|} - S_{|S|-1} \right] & \text{if }|S| > 1 \end{cases}

sun(S1…∣S∣,K)={Sif K=1sun(moon(S1…∣S∣),K−1)if K>1sun\left(S_{1\dots|S|}, K\right) = \begin{cases} S & \text{if } K = 1 \\ sun\left(moon\left(S_1\dots|S|\right), K - 1\right) & \text{if }K > 1 \end{cases}

예를 들어,

  • moon([2,7])=[5]moon([2, 7]) = [5].
  • moon([4,1,0,7,2])=[−3,−1,7,−5]moon([4, 1, 0, 7, 2]) = [-3, -1, 7, -5].
  • sun([4,1,0,7,2],5)=sun([−3,−1,7,−5],4)=sun([2,8,−12],3)=sun([6,−20],2)=sun([−26],1)=[−26]sun([4, 1, 0, 7, 2], 5) = sun([-3, -1, 7, -5], 4) = sun([2, 8, -12], 3) = sun([6, -20], 2) = sun([-26], 1) = [-26].

sun(S1…∣S∣,∣S∣)sun\left(S_{1\dots |S|}, |S|\right)는 항상 원소가 정확히 하나인 수열이다.

NN개의 정수로 이루어진 수열 A1…NA_{1\dots N}이 주어진다. 인덱스 i=[1…N]i = [1\dots N]가 hot이라는 것은 다음 조건을 만족하는 수열 A1…N′A'_{1\dots N}이 존재한다는 것이다.

  • Ai′≠AiA'_i \ne A_i이고 Ai′A_i'는 −100 000-100\,000 이상 100 000100\,000 이하의 정수이다.
  • 모든 j≠ij \ne i에 대해 Aj′=AjA'_j = A_j이다.
  • sun(A1…N′,N)sun\left(A'_{1\dots N}, N\right)의 유일한 원소가 235 813235\,813의 배수이다.

이 문제에서 할 일은 주어진 A1…NA_{1\dots N}에서 hot인 인덱스의 개수를 세는 것이다.

예를 들어 A1…5=[4,1,0,7,2]A_{1\dots 5} = [4, 1, 0, 7, 2]에는 hot인 인덱스가 33개 있으며, 이는 {1,3,5}\{1, 3, 5\}이다.

  • i=1i = 1일 때 A1′=30→A1…5′=[30,1,0,7,2]→sun([30,1,0,7,2],5)=[0]A'_1 = 30 \rightarrow A'_{1\dots5} = [30, 1, 0, 7, 2] \rightarrow sun([30, 1, 0, 7, 2], 5) = [0]
  • i=3i = 3일 때 A3′=−78 600→A1…5′=[4,1,−78 600,7,2]→sun([4,1,−78 600,7,2],5)=[−471 626]A'_3 = -78\,600 \rightarrow A'_{1\dots5} = [4, 1, -78\,600, 7, 2] \rightarrow sun([4, 1, -78\,600, 7, 2], 5) = [-471\,626]
  • i=5i = 5일 때 A5′=28→A1…5′=[4,1,0,7,28]→sun([4,1,0,7,28],5)=[0]A'_5 = 28 \rightarrow A'_{1\dots5} = [4, 1, 0, 7, 28] \rightarrow sun([4, 1, 0, 7, 28], 5) = [0]

00과 −471 626-471\,626은 모두 235 813235\,813의 배수이다. 반면 인덱스 i=2i = 2는 hot이 아니다. −100 000-100\,000 이상 100 000100\,000 이하의 정수 A2′≠A2A'_2 \ne A_2 중에서 sun(A1…5′,5)sun(A'_{1\dots 5}, 5)의 유일한 원소가 235 813235\,813의 배수가 되게 하는 값이 없기 때문이다. 인덱스 i=4i = 4도 같은 이유로 hot이 아니다.

입력

첫 줄에 정수 NN (1≤N≤100 0001 \le N \le 100\,000)이 주어진다. 이는 AA에 들어 있는 정수의 개수이다. 다음 줄에 NN개의 정수 AiA_i (−100 000≤Ai≤100 000-100\,000 \le A_i \le 100\,000)가 주어진다. 이는 정수 수열 AA이다.

출력

주어진 A1…NA_{1\dots N}에서 hot인 인덱스의 개수를 한 줄에 출력한다.

예제3

  1. 예제 1

    입력
    5
    4 1 0 7 2
    
    예상 출력
    3
    
  2. 예제 2

    입력
    4
    10 20 30 -40
    
    예상 출력
    4
    
  3. 예제 3

    입력
    2
    100 100
    
    예상 출력
    0