만드는 중입니다

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

직사각형 색칠 2

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

요약
N은 1e18까지이고 M은 5 이하인 N×M 격자를 검은색과 흰색으로 칠할 때, 같은 색 네 칸으로 이루어진 2×2 블록이 없도록 칠하는 경우의 수를 1e9+7로 나눈 나머지를 구한다.
난이도

어려움10점 중 8점

유형
동적 계획법, 행렬, 조합론, 비트 연산
정답자
아직 제출이 없습니다

문제

단위 정사각형으로 나누어진 N×MN \times M 크기의 직사각형이 주어졌을 때, 다음 조건을 만족하도록 색칠하는 방법의 수를 구하는 프로그램을 작성하시오.

  • 모든 칸은 검정색 또는 흰색 중 하나로 색칠해야 한다.
  • 같은 색으로 이루어진 2×22 \times 2 크기의 정사각형이 없어야 한다.

N=3N = 3, M=3M = 3인 경우 올바른 색칠 방법

N=3N = 3, M=3M = 3인 경우 올바르지 않은 색칠 방법

N,MN, M이 주어졌을 때, N×MN \times M 크기의 직사각형을 올바르게 색칠하는 방법의 수를 1 000 000 0071\,000\,000\,007로 나눈 나머지를 구해보자.

입력

첫째 줄에 NN (1≤N≤10181 \le N \le 10^{18}), MM (1≤M≤51 \le M \le 5)이 주어진다.

출력

첫째 줄에 N×MN \times M 크기의 직사각형을 올바르게 색칠하는 방법의 수를 1 000 000 0071\,000\,000\,007로 나눈 나머지를 출력한다.

예제3

  1. 예제 1

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

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

    입력
    100 5
    
    예상 출력
    264366292