题目描述
H 教授是一位密碼學專家,他現在正在研究如何對一個正整數做特殊分解,因而發明了正整數的迴文分解法,其分解方法如下:對於一個正整數 n,把 n 分解成 k 個正整數 x1,x2,…,xk 的和,滿足 n=x1+x2+…+xk,且 x1,x2,…,xk 由左讀到右和由右讀到左相同。
當兩種分解法分解出來的正整數數量不同,或是出現的次序不同時,則視為不同的分解法。更嚴謹地說,設 $n = a_1 + a_2 + \ldots + a_k = b_1 + b_2 + \ldots + b_l$ 為兩種迴文分解法。若 k=l,或者 k=l 但存在 i∈{1,2,…,k} 使得 ai=bi,則視為不同的分解法。例如正整數 6 有 8 種迴文分解法,分別是
- 6;
- 2+2+2;
- 3+3;
- 2+1+1+2;
- 1+4+1;
- 1+1+2+1+1;
- 1+2+2+1;
- 1+1+1+1+1+1。
給定一個正整數 n,請寫一支電腦程式去計算 n 有多少種不同的迴文分解法。因為這個數字可能很大,你只要求出方法數除以 109+7 的餘數就行了。
输入格式
t
n1
n2
⋮
nt
- t 代表你的電腦程式需要處理的正整數 n 的個數。
- ni 代表第 i 筆詢問的正整數 n。
输出格式
ans1
ans2
⋮
anst
- ansi 代表 ni 的迴文分解方法數除以 109+7 的餘數。
2
3
6
2
8
提示
測資限制
- 1≤t≤104。
- 1≤ni≤1015。
- 輸入的數皆為整數。
評分說明
本題共有四組子任務,條件限制如下所示。
每一組可有一或多筆測試資料,該組所有測試資料皆需答對才會獲得該組分數。
子任務 |
分數 |
額外輸入限制 |
1 |
10 |
輸入的 ni 兩兩相異,且 ni≤30 |
2 |
30 |
ni≤1000 |
3 |
10 |
ni≤106 |
4 |
50 |
無額外限制 |