15번

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

요약
어떤 수가 c의 배수면 c로 나누고 아니면 c의 거듭제곱을 취하는 수열에서, a_m + a_{m+1} = c+1이 되는 모든 시작값 a_1의 합을 m = 1부터 M까지 각각 구해 1e9+7로 나눈 나머지를 출력한다.
난이도

보통10점 중 7점

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

문제

양의 정수의 무한한 수열 a_1,a_2,a_3,⋯a\_1, a\_2, a\_3, \cdots 이 다음 조건을 만족한다. cc는 고정된 양의 정수이고 c≥2c \geq 2이다.

임의의 양의 정수 nn에 대하여,

  • a_na\_n이 cc의 배수인 경우, a_n+1=a_nca\_{n+1} = \frac{a\_n}{c} 이다.
  • a_na\_n이 cc의 배수가 아닌 경우, a_n+1=ca_na\_{n+1} = c^{a\_n} 이다.

양의 정수 mm에 대하여, a_m+a_m+1=c+1a\_m + a\_{m+1} = c+1 이 성립하도록 하는 모든 양의 정수 a_1a\_1의 합을 S(m)S(m)이라고 하자. 양의 정수 MM이 주어졌을 때, S(1),S(2),⋯ ,S(M)S(1), S(2), \cdots, S(M)의 값을 각각 구하여라. 단, 값이 매우 커질 수 있으므로 1 000 000 0071\ 000\ 000\ 007로 나눈 나머지를 출력한다.

입력

첫째 줄에 두 정수 c,Mc, M이 공백을 사이에 두고 주어진다.

출력

MM개의 줄에 걸쳐 정답을 출력한다. i(1≤i≤M)i(1 \leq i \leq M)번째 줄에는 S(i)S(i)를 1 000 000 0071\ 000\ 000 \ 007로 나눈 나머지를 하나의 음이 아닌 정수로 출력해야 한다. 1 000 000 0071\ 000\ 000\ 007은 소수이다.

제한

  • 2≤c≤1092 \leq c \leq 10^9
  • 1≤M≤100 0001 \leq M \leq 100\ 000
  • 주어지는 모든 수는 정수이다.

예제2

  1. 예제 1

    입력
    2 6
    
    예상 출력
    3
    7
    15
    34
    72
    153
    
  2. 예제 2

    입력
    142857 2
    
    예상 출력
    142858
    408265167