만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

말더듬이 없는 수열

시간 제한3초메모리 제한128 MB

요약
길이 n인 스퀘어 없는(더듬음 없는) 문자열이 존재하는 최소 알파벳 크기를 출력한다.
난이도

쉬움10점 중 3점

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

문제

문자로 이루어진 수열을 생각한다. 수열 x1,x2,…,xnx_1, x_2, \dots, x_n 에서 어떤 연속한 블록 바로 뒤에 그것과 똑같은 블록이 이어지면, 이 수열은 말더듬(stammer) 을 포함한다고 한다. 정확히는, 1≤i<j1 \le i < j 이고 2j−i−1≤n2j - i - 1 \le n 인 두 첨자 ii, jj 가 존재하여

xi=xj,  xi+1=xj+1,  …,  xj−1=x2j−i−1x_{i} = x_{j},\; x_{i+1} = x_{j+1},\; \dots,\; x_{j-1} = x_{2j-i-1}

이 성립하는 경우를 말한다. 다시 말해, 비어 있지 않은 어떤 단어 ww 에 대해 wwww 꼴의 부분 문자열(제곱)을 포함하는 경우이다. 이러한 반복 블록이 하나도 없는 수열을 말더듬이 없는 수열이라고 부른다.

길이가 nn 인 말더듬이 없는 수열을, 되도록 적은 종류의 문자만으로 만들고자 한다.

몇 가지 사실:

  • 문자를 한 종류만 쓰면 말더듬이 없는 수열의 길이는 최대 11 이다. aaaa 자체가 이미 말더듬이기 때문이다.
  • 문자를 두 종류(aa, bb) 쓰면 말더듬이 없는 수열의 최대 길이는 33 이며, 그러한 수열은 정확히 abaaba 와 babbab 뿐이다. 예를 들어 bababbabab 은 말더듬이 없는 수열이 아니다(블록 baba 와 블록 abab 가 각각 반복된다).
  • 문자를 세 종류 쓰면 모든 길이에 대해 말더듬이 없는 수열이 존재한다. 예를 들어 abcababcab 은 길이가 55 인 말더듬이 없는 수열이다.

필요한 문자 종류의 최소 개수를 구하여라.

입력

표준 입력의 첫째 줄에 양의 정수 nn (1≤n≤10,000,0001 \le n \le 10{,}000{,}000) 이 주어진다. 만들고자 하는 수열의 길이이다.

출력

길이가 nn 인 말더듬이 없는 수열에 반드시 나타나야 하는 서로 다른 문자의 최소 개수 kk 를 한 줄에 출력한다.

예제5

  1. 예제 1

    입력
    1
    
    예상 출력
    1
    
  2. 예제 2

    입력
    2
    
    예상 출력
    2
    
  3. 예제 3

    입력
    3
    
    예상 출력
    2
    
  4. 예제 4

    입력
    4
    
    예상 출력
    3
    
  5. 예제 5

    입력
    5
    
    예상 출력
    3