순환 시프트
시간 제한2초메모리 제한512 MB
문자열의 각 접두사마다 사전순으로 가장 작은 순환 이동의 최소 인덱스를 구하고, 8753의 거듭제곱을 곱해 10^9+123으로 나눈 나머지의 합을 구합니다.
문제
길이가 인 문자열을 라고 하자. 0 이상 이하의 임의의 정수 에 대해, 의 번째 순환 시프트는 이다. 예를 들어 wellplayed의 4번째 순환 시프트는 playedwell이고, metro의 0번째 순환 시프트는 metro 자체이다.
길이가 인 문자열에 대해 는 의 번째 순환 시프트가 모든 순환 시프트 중 사전순으로 가장 작게 되는 이다. 그런 가 여러 개이면 그중 가장 작은 값을 로 한다. 예를 들어 f(acabbac) = 2, f(cabcab) = 1이다.
길이가 인 문자열에 대해 는 를 1부터 까지 바꿔가며 을 모두 더한 값이다. 주어진 각 문자열 에 대해 를 으로 나눈 나머지를 구하라.
입력
첫 줄에 정수 ()가 주어진다. 이어서 개의 줄에 각각 비어 있지 않은 영소문자 문자열이 한 줄씩 주어진다. 입력 문자열들의 길이 합은 을 넘지 않는다.
출력
각 입력 문자열에 대해 입력 순서대로 를 으로 나눈 나머지를 한 줄에 하나씩 출력한다.