만드는 중입니다

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

고속도로 조합론

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

요약
길이 200미터의 2차선 도로에 1x2 크기 차를 배치하여, 빈 칸을 채우는 방법의 수를 10^9+7로 나눈 나머지가 n과 같게 만드는 문제입니다.
난이도

보통10점 중 7점

유형
동적 계획법, 수학, 구현
정답자
아직 제출이 없습니다

문제

당신은 베를란드의 새 교통부 장관이다. 최근 길이 200미터, 차선 두 개짜리 도로 구간에 무료 주차를 허용했다. 그 뒤로 두 차선에 걸쳐 차를 세우는 기발한 운전자들 때문에 이 구간은 계속 막히고 있다...

그러나 이는 당신의 관심사가 아니다. 당신은 구간이 비어 있을 때 자신의 차를 일부 주차하는 데 더 관심이 많다. 구체적으로, 남은 빈 공간을 차로 채우는 서로 다른 방법의 수가 행운의 수 nn과 109+710^9+7로 나눈 나머지 기준으로 합동이 되도록 차를 주차하려 한다.

Figure H.1: Visualization of Sample Output 1.

각 차의 크기는 1×21\times2 미터이다. 두 차선은 각각 폭 1미터, 길이 200미터이다. 당신이 가진 차는 200대보다 많아서, 도로 구간에 주차할 수 있는 차가 충분하다.

입력

한 줄에 정수 nn (0≤n<109+70\leq n<10^9+7)이 주어진다. 이는 도로를 채우는 가능한 방법의 수를 109+710^9+7로 나눈 나머지이다.

가능한 모든 nn 값에 대해 최소 하나의 유효한 해가 존재함이 증명되어 있다.

출력

두 차선의 상태를 두 줄로 출력한다. 점유된 칸은 "#", 빈 칸은 "."으로 표시한다. 두 줄의 길이는 같아야 하며, 1미터 이상 200미터 이하여야 한다. 점유된 칸은 실제로 주차된 차에 대응해야 한다. 해가 200미터보다 짧은 구간을 쓰면, 나머지 부분은 주차된 차로 막혀 있다고 본다.

예제2

  1. 예제 1

    입력
    10
    
    예상 출력
    ##..#.......
    ....#.##....
    
  2. 예제 2

    입력
    27
    
    예상 출력
    ...##........
    ........##...