문자열 알고리즘
시간 제한20초메모리 제한512 MB
모든 k에 대해 s를 길이 k의 블록으로 자르고 남는 부분을 버린 뒤, 해밍 거리가 1 이하인 블록 쌍의 개수를 구한다.
문제
길이 인 문자열 가 주어진다.
()를 고정하자. 개의 길이 문자열을 만들고, 번째 문자열은 에서 위치 부터 시작하는 부분 문자열로 정의한다: .
다시 말해, 문자열 를 길이 의 문자열들로 자르고 남는 부분은 버린다. 로 정의한다. 여기서 는 해밍 거리이다. 즉, 는 서로 다른 위치가 최대 1개인 문자열 쌍 의 개수이다.
부터 까지 모든 에 대해 를 계산하는 알고리즘을 설계하라.
입력
첫째 줄에 양의 정수 이 주어진다 (). 은 문자열의 길이이다.
둘째 줄에 길이 인 문자열 가 주어진다. 는 영소문자로만 이루어져 있다.
출력
개의 수를 출력한다. 번째 수는 이다.