#P11909. [NHSPC 2023] H. 整數的迴文分解法

[NHSPC 2023] H. 整數的迴文分解法

题目描述

H 教授是一位密碼學專家,他現在正在研究如何對一個正整數做特殊分解,因而發明了正整數的迴文分解法,其分解方法如下:對於一個正整數 nn,把 nn 分解成 kk 個正整數 x1,x2,,xkx_1, x_2, \ldots, x_k 的和,滿足 n=x1+x2++xkn = x_1 + x_2 + \ldots + x_k,且 x1,x2,,xkx_1, x_2, \ldots, x_k 由左讀到右和由右讀到左相同。

當兩種分解法分解出來的正整數數量不同,或是出現的次序不同時,則視為不同的分解法。更嚴謹地說,設 $n = a_1 + a_2 + \ldots + a_k = b_1 + b_2 + \ldots + b_l$ 為兩種迴文分解法。若 klk \ne l,或者 k=lk = l 但存在 i{1,2,,k}i \in \{1, 2, \ldots, k\} 使得 aibia_i \ne b_i,則視為不同的分解法。例如正整數 6688 種迴文分解法,分別是

  1. 66
  2. 2+2+22 + 2 + 2
  3. 3+33 + 3
  4. 2+1+1+22 + 1 + 1 + 2
  5. 1+4+11 + 4 + 1
  6. 1+1+2+1+11 + 1 + 2 + 1 + 1
  7. 1+2+2+11 + 2 + 2 + 1
  8. 1+1+1+1+1+11 + 1 + 1 + 1 + 1 + 1

給定一個正整數 nn,請寫一支電腦程式去計算 nn 有多少種不同的迴文分解法。因為這個數字可能很大,你只要求出方法數除以 109+710^9 + 7 的餘數就行了。

输入格式

tt
n1n_1
n2n_2
\vdots
ntn_t

  • tt 代表你的電腦程式需要處理的正整數 nn 的個數。
  • nin_i 代表第 ii 筆詢問的正整數 nn

输出格式

ans1\textrm{ans}_1
ans2\textrm{ans}_2
\vdots
anst\textrm{ans}_t

  • ansi\textrm{ans}_i 代表 nin_i 的迴文分解方法數除以 109+710^9 + 7 的餘數。
2
3
6
2
8

提示

測資限制

  • 1t1041 \le t \le 10^4
  • 1ni10151 \le n_i \le 10^{15}
  • 輸入的數皆為整數。

評分說明

本題共有四組子任務,條件限制如下所示。 每一組可有一或多筆測試資料,該組所有測試資料皆需答對才會獲得該組分數。

子任務 分數 額外輸入限制
1 1010 輸入的 nin_i 兩兩相異,且 ni30n_i \le 30
2 3030 ni1000n_i \le 1000
3 1010 ni106n_i \le 10^6
4 5050 無額外限制