문자열 제곱

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

요약
문자열 s가 주어질 때, 어떤 문자열 a의 n제곱으로 표현할 수 있는 가장 큰 n을 구합니다.
난이도

보통10점 중 5점

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

문제

소문자 알파벳으로 이루어진 두 문자열 aa와 bb에 대해, a∗ba * b는 두 문자열을 이어 붙인 결과를 뜻한다. 예를 들어 a=abca=\texttt{abc}, b=defb=\texttt{def}이면 a∗b=abcdefa * b=\texttt{abcdef}이다.

이 이어 붙이기를 곱셈으로 본다면, 음이 아닌 정수 지수의 거듭제곱도 다음과 같이 정의할 수 있다.

  • a0=εa^0 = \varepsilon (빈 문자열)
  • an+1=a∗ana^{n+1} = a * a^n

문자열 ss가 주어질 때, s=ans = a^n을 만족하는 문자열 aa가 존재하도록 하는 가장 큰 nn을 구하는 프로그램을 작성하시오.

입력

입력은 최대 10개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 문자열 ss 하나가 적힌 한 줄이다. ss의 길이는 1 이상 1,000,000 이하이다. 마지막 테스트 케이스 다음 줄에는 마침표(.) 하나만 주어진다.

출력

각 테스트 케이스마다 s=ans = a^n을 만족하는 가장 큰 nn을 한 줄에 하나씩 출력한다.

예제6

  1. 예제 1

    입력
    abcd
    aaaa
    ababab
    .
    
    예상 출력
    1
    4
    3
    
  2. 예제 2

    입력
    a
    .
    
    예상 출력
    1
    
  3. 예제 3

    입력
    zzzzzzz
    z
    .
    
    예상 출력
    7
    1
    
  4. 예제 4

    입력
    abcabcab
    abcabcabc
    .
    
    예상 출력
    1
    3
    
  5. 예제 5

    입력
    abababababab
    abab
    .
    
    예상 출력
    6
    2
    
  6. 예제 6

    입력
    abababa
    aabaab
    .
    
    예상 출력
    1
    2