搞啥啊fracture ray!那麼多花式分音!

發布時間: June 19, 2023, 1:22 p.m.   最後更新時間: June 20, 2023, 8:21 p.m.   時間限制: 1000ms   記憶體限制: 128M

fracture ray: Arcaea v1.7.0更新的付費曲包Luminous Sky中,作為隱藏的最終魔王曲初次亮相,作曲者為消除,其作曲特色有變換的BPM和花式分音,而在本曲中雖然沒有BPM的變化但花式分音是隨處可見的,5分、6分、7分、8分、10分、12分、14分、16分、20分、22分、24分、28分、32分「齊聚一堂」,而在Arcaea的譜面中也體現了這些花式音符(除了20分和22分),也因為花式分音過多,其futrue難度的理論值存活了366天(硬比一年多了一天),也是到目前為止理論值存活最久的譜面。

儘管副社長覺得fracture ray很好聽,譜面也很好玩,但常被花式分音搞到far甚至lost還是十分不爽,所以他在網路上找的了可以自創Arcaea譜面的網站,想把花式分音好好練一下,於是他決定把所有花式分音的組合方式都練過一遍,但仔細想一想不難發現可能的組合數量十分的多,所以副社長希望可以先把可能數量算出來以確定大概要花多少時間

現在副社長想要練一首長度為$n$秒的歌,其中可以用的花式分音有$m$種,為了方便計算(其實是副社長樂理不好不會用分音計算,想學樂理或如何寫歌請洽王宥晴學長,他是音樂和音遊的電神),分音的計算方式採用時值,第$i$種分音需要和下一個分音間隔$a_i$秒,請你計算出有幾種排列組合的方法可以剛好完成這首歌(i.e.最後一個分音結束時剛好是第$n$秒)

由於方法可能很多種,所以請輸出對$10^9+7$取餘後的答案

數字範圍:

$m \leq a_{max} \leq 25$

$n \leq 10^{18}$

特殊限制:

$a_1 < a_2 < a_3 < \dots < a_m$

第一行給定兩整數$n, m$代表要做一首長度為$n$秒的歌,並且有$m$種花式分音可以用
第二行給$m$個整數,分別代表每種花式分音需隔幾秒才可以放下一個

輸出有幾種花式分音的排列組合的方法可以完成這首歌

複製範例
5 2
1 2
8
複製範例
6 3
1 3 5
8
複製範例
1000 10
1 2 3 4 5 6 7 8 9 10
858977721

範例一:

8種分別為

1 1 1 1 1

1 1 1 2

1 1 2 1

1 2 1 1

2 1 1 1

1 2 2

2 1 2

2 2 1

範例二:

8種分別為

1 1 1 1 1 1

1 1 1 3

1 1 3 1

1 3 1 1

3 1 1 1

1 5

3 3

5 1

資料來源

https://zh.moegirl.org.cn/zh-tw/Fracture_Ray

dp 矩陣快速冪

竹中軟研38th第三次競賽