추진력 수열 찾기

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

요약
숫자 문자열을 등차수열과 그 마지막 항의 정수배인 항으로 분할할 수 있는지 판별하고 가능한 최소 f값을 구하는 문제입니다.
난이도

어려움10점 중 8점

유형
문자열, 수학, 완전 탐색, 구현
정답자
아직 제출이 없습니다

문제

길이가 nn인 수열 A={a1,⋯ ,an}A=\{a_1, \cdots, a_n\}이 다음 조건을 모두 만족하면, AA를 추진력 fAf_A를 가진 추진력 수열이라고 하자.

  • n≥3n \ge 3이다.
  • 1≤i≤n1 \le i \le n인 모든 정수 ii에 대해, aia_i는 정수이고 1≤ai<1091 \le a_i < 10^9이다.
  • 모든 1≤i≤n−21 \le i \le n-2에 대해 ai+1=ai+da_{i+1}=a_i+d를 만족하는 양의 정수 dd가 존재한다. 즉, 마지막 항 ana_n을 제외한 수열 {a1,⋯ ,an−1}\{a_1, \cdots, a_{n-1}\}은 공차가 양의 정수인 등차수열이다.
  • an=an−1⋅fAa_n=a_{n-1}\cdot f_A를 만족하는 22 이상인 정수 fAf_A가 존재한다.

이를테면 A={2,3,4,8}A=\{2, 3, 4, 8\}은 d=1d=1, fA=2f_A=2일 때 모든 조건을 만족하므로 추진력 수열이다.

추진력 수열 {2,3,4,8}\{2, 3, 4, 8\}이 추진력을 얻는 모습

숫자로만 이루어진 문자열 SS가 주어진다. SS가 a1,⋯ ,ana_1, \cdots, a_n을 공백 없이 차례대로 이어 붙인 문자열이 되도록 하는 추진력 수열 A={a1,⋯ ,an}A=\{a_1, \cdots, a_n\}가 존재하는지 판단하라.

각 aia_i를 문자열로 쓸 때 앞에 불필요한 0을 붙일 수 없다. 조건을 만족하는 수열이 여러 개라면, fAf_A가 가장 작은 수열을 찾아야 한다.

입력

첫째 줄에 문자열 SS가 주어진다. SS의 길이는 33 이상 2 3482\,348 이하이고, 각 문자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 중 하나이다.

단, SS의 첫 번째 문자는 0이 아니다.

출력

SS에 대해 조건을 만족하는 추진력 수열 AA가 존재하면, fAf_A를 정수로 출력한다. 가능한 AA가 여러 개라면 그중 가장 작은 fAf_A를 출력한다.

조건을 만족하는 추진력 수열이 존재하지 않으면 0을 출력한다.

예제3

  1. 예제 1

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

    입력
    100000000010000000012000000002
    
    예상 출력
    0
    
  3. 예제 3

    입력
    123
    
    예상 출력
    0