아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

이단적인 뫼비우스

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

요약
길이 200의 0/1 문자열 t가 |μ(1)|, |μ(2)|, ... 수열에서 처음 나타나는 위치 p를 구하고, 나타나지 않으면 -1을 출력합니다.
난이도

어려움10점 중 9점

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

문제

Rikka는 문 번호가 404인 이상한 방이 눈에 띌 때까지 호기심에 학교 건물을 돌아다니고 있었다.

그곳은 컴퓨터실처럼 보였다. 가지런히 놓인 수십 대의 컴퓨터가 있었고, 사방에 놓인 종이, 펜, 화이트보드 때문에 긴장된 분위기가 감돌았다. 그러던 중 Rikka는 다른 컴퓨터와 달라 보이지 않는 한 컴퓨터에 정체불명의 코드가 떠 있는 것을 발견했다. 이것은 inner world에서 온 메시지일까?

들뜬 Rikka는 조사를 시작했다. 이 메시지는 for_patterns_in_mobius라는 프로그램이 만든 것이며, 길이가 10910^9인 문자열 ss를 출력한다. ss에는 x=1,2,…,109x = 1, 2, \dots, 10^9에 대한 ∣μ(x)∣\lvert \mu(x) \rvert의 값이 순서대로 들어 있다.

그때 밖에서 발소리가 들렸다. Rikka는 재빨리 스크린샷을 찍고 자리를 떴다. 스크린샷에는 길이가 200200인 문자열 tt가 기록되어 있었다. tt는 ss의 부분 문자열일 수도 있다. Rikka는 tt가 실제로 ss의 부분 문자열인지, 그렇다면 ss에서 처음 나타나는 위치가 어디인지 알고 싶어 한다.

이 코드를 해독하는 것을 도와줄 수 있겠는가?

입력

총 1010줄이 주어진다. 각 줄은 "0" 또는 "1"로 이루어진 2020개의 문자로 구성된다. tt는 이 줄들을 순서대로 이어 붙인 문자열이다.

출력

한 줄에 정수 하나를 출력한다. tt가 ss의 부분 문자열이면, ss에서 tt가 처음 나타나는 위치를 출력한다. 즉, i=0,1,…,199i = 0, 1, \dots, 199에 대해 ∣μ(p+i)∣\lvert \mu(p+i) \rvert의 값을 이어 쓴 문자열이 tt와 같아지는 가장 작은 양의 정수 pp를 출력한다. 부분 문자열이 아니면 −1-1을 출력한다.

힌트

μ()\mu()의 정의는 다음과 같다.

임의의 양의 정수 xx에 대해 x=∏i=1kpicix = \prod_{i=1}^k p_i^{c_i}를 xx의 소인수분해라고 하자. 여기서 각 pip_i는 서로 다른 소수이고, 각 cic_i는 양의 정수이며, x=1x=1이면 k=0k=0이다. 이때 μ(x)\mu(x)는 다음과 같이 정의된다.

μ(x)={0∃ci>1,(−1)kotherwise\mu(x)= \begin{cases} 0 & \exists c_i>1, \\ (-1)^k & \text{otherwise} \end{cases}

예제2

  1. 예제 1

    입력
    11101110011011101010
    11100100111011101110
    11100110001010101110
    11001110111011001110
    01101110101011101000
    11101110111011100110
    01100010111011001110
    11101100101001101110
    10101110010011001110
    11101110011011101010
    
    예상 출력
    1
    
  2. 예제 2

    입력
    01010101010101010101
    10101010101010101010
    01010101010101010101
    10101010101010101010
    01010101010101010101
    10101010101010101010
    01010101010101010101
    10101010101010101010
    01010101010101010101
    10101010101010101010
    
    예상 출력
    -1