문제 번호 1458. -- KMP-응용문제 2, 5점

1458: KMP-응용문제 2, 5점

시간 제한: 1 Sec  메모리 제한: 128 MB
제출: 4  해결 문제 수: 2
[제출][채점 상황 열람][게시판]

문제 설명

알파벳 소문자로 이루어진 두 문자열 a와 b가 주어졌을 때, a*b는 두 문자열을 이어붙이는 것을 뜻한다. 예를 들어, a="abc", b="def"일 때, a*b="abcdef"이다.

이러한 이어 붙이는 것을 곱셈으로 생각한다면, 음이 아닌 정수의 제곱도 정의할 수 있다.

  • a^0 = "" (빈 문자열)
  • a^(n+1) = a*(a^n)

문자열 s가 주어졌을 때, 어떤 문자열 a에 대해서 s=a^n을 만족하는 가장 큰 n을 찾는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각각의 테스트 케이스는 s를 포함한 한 줄로 이루어져 있다. s의 길이는 적어도 1이며, 백만글자를 넘지 않는다. 마지막 테스트 케이스의 다음 줄은 마침표이다.

출력

각각의 테스트 케이스에 대해, s=a^n을 만족하는 가장 큰 n을 찾은 뒤 출력한다.

이 때 a는 문자열이며, 내용을 어떤 것으로 할 지는 정하기 나름이다.

예를 들어, s="abcd" 라면, a = "abcd"로 해야 하고, 이 때, n의 최대값은 1이다.

입력 예시

abcd
aaaa
ababab
.

출력 예시

1
4
3

도움말

출처

[제출][채점 상황 열람]