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

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

폭풍 속의 비명

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

요약
길이 N이고 각 항이 1부터 K인 수열 중 이웃한 두 항이 항상 서로소인 것의 개수를 1e9+7로 나눈 나머지를 구한다. N은 1e18까지 커질 수 있다.
난이도

어려움10점 중 8점

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

문제

화성은 대기가 매우 희박하지만, 바람이 예상치 못한 세기로 부는 경우가 있다. 적도 근처의 좁고 깊은 협곡에서는 그 효과가 더 커진다. 그런 협곡 중 하나의 바닥은 매우 평평해서 운송에 쓰이는데, 가파른 벽이 우주 방사선을 부분적으로 막아 주기 때문이다. 시간이 흐르면서 협곡에는 모래가 쌓였다. 모래는 바람에 날려 커다란 사구가 되고, 이 사구가 운송을 막는다. 사구는 협곡 바닥을 따라 길게 이어진 하나의 사구 열을 이룬다.

사구의 배열은 안정적이지 않다. 거센 모래 폭풍이 사구를 자주 다른 열로 바꾸어 놓는다. 폭풍 속에서 모래 덩어리가 격렬하게 움직이며 이상한 소리가 나는데, 이 때문에 사구는 "폭풍 속의 비명"으로 알려져 있다.

사구를 자세히 측정한 결과, 인접한 사구의 높이를 화성 단위로 나타내면 항상 작은 양의 정수였다. 또한 협곡 안에서 바람이 간섭하는 영향 때문인지, 인접한 두 사구의 높이는 둘 다 1인 경우가 아니면 서로 다르다. 실제로 인접한 두 사구의 높이는 항상 서로소이다. 즉, 1보다 큰 공약수가 없다.

사구의 움직임을 모델링하려면 사구 열에서 가능한 모든 배열의 수를 구해야 한다.

입력

입력은 한 줄에 두 정수 K, N (1 ≤ K ≤ 66, 1 ≤ N ≤ 1018)을 포함한다. K는 사구 높이의 최댓값이고, N은 사구 열에 있는 사구의 수이다.

출력

서로 다른 사구 열의 수를 출력한다. 결과를 109 + 7로 나눈 나머지를 출력한다.

예제3

  1. 예제 1

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

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

    입력
    42 75097099101114
    
    예상 출력
    673977658