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

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

속독 강좌

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

요약
등차수열을 n으로 나눈 나머지가 p보다 작은지로 정의되는 0과 1의 수열 c에서 주어진 m비트 단어 w가 나타나는 위치의 개수를 센다.
난이도

어려움10점 중 9점

유형
정수론, 문자열 매칭, 누적 합, 수학
정답자
아직 제출이 없습니다

문제

Byteasar는 속독 강좌를 수강했고, 그곳에서 지각 능력을 향상시키는 여러 훈련을 배웠다. 그가 가장 좋아하는 훈련은 기호열에서 패턴을 찾는 것이다. 이 훈련을 위해 Byteasar는 컴퓨터로 0과 1로 이루어진 아주 긴 수열을 다음과 같이 생성한다. 서로소인 두 정수 nn과 aa, 그리고 정수 bb, pp를 고르면 컴퓨터는 c0,c1,…,cn−1c_0, c_1, \dots, c_{n-1}을 생성하는데, (ai+b) mod n<p(ai+b) \bmod n < p일 때 그리고 그때만 ci=0c_i = 0이다. 마지막으로 Byteasar는 더 짧은 mm개의 기호로 이루어진 수열 w0,w1,…,wm−1w_0, w_1, \dots, w_{m-1}을 생각한다. 여기까지 준비한 뒤, 그의 과제는 컴퓨터가 생성한 수열에서 짧은 수열이 나타나는 모든 위치를 최대한 빠르게 찾는 것이다. 그는 자신이 정말로 모든 위치를 찾았는지 확인하는 프로그램을 작성하는 데 도움을 요청했다.

입력

첫째 줄에 다섯 정수 nn, aa, bb, pp, mm이 하나의 공백으로 구분되어 주어진다 (2≤n≤1 000 000 0002 \le n \le 1\,000\,000\,000, 1≤p,a,b,m<n1 \le p, a, b, m < n, 1≤m≤1 000 0001 \le m \le 1\,000\,000). aa와 nn은 서로소이다. 둘째 줄에는 0 또는 1인 mm개의 기호로 이루어진 단어 w0,w1,…,wm−1w_0, w_1, \dots, w_{m-1}이 주어진다. 다음의 상호 배타적인 부류들이 전체 테스트 입력의 부분집합을 이룬다.

  • 전체 점수의 8%에 해당하는 테스트에서는 n≤1000n \le 1000이다.
  • 전체 점수의 8%에 해당하는 다른 테스트에서는 n≤1 000 000n \le 1\,000\,000이다.
  • 전체 점수의 66%에 해당하는 또 다른 테스트에서는 m≤1000m \le 1000이다.

출력

첫째 줄이자 유일한 줄에 수열 c0,c1,…,cn−1c_0, c_1, \dots, c_{n-1}에서 수열 w0,w1,…,wm−1w_0, w_1, \dots, w_{m-1}이 나타나는 횟수를 출력한다.

힌트

n=9n = 9, a=5a = 5, b=6b = 6, p=4p = 4일 때 컴퓨터는 다음과 같이 수열을 생성한다.

ii012345678
ai+bai + b61116212631364146
(ai+b) mod n(ai + b) \bmod n627384051
cic_i101011010

수열 101011010에서 101은 세 번 나타난다.

예제1

  1. 예제 1

    입력
    9 5 6 4 3
    101
    
    예상 출력
    3