#138. 类欧几里得算法
#138. 類歐幾里得算法
以下除法均為向下取整, 定義f(a,b,c,n,k1,k2)=∑x=0nxk1(a×x+bc)k2f(a, b, c, n, k_1, k_2) = \sum\limits_{x = 0} ^{n} x ^{k_1} \left(\frac{a \times x + b}{c}\right) ^ {k_2}f(a,b,c,n,k1?,k2?)=x=0∑n?xk1?(ca×x+b?)k2?。
∑x=0nxk1(a×x+bc)k2,(1≤n,a,c≤109,0≤b≤109,0≤k1+k2≤10)\sum_{x = 0} ^{n} x ^{k_1} \left(\frac{a \times x + b}{c}\right) ^ {k_2}, (1 \le n, a, c \le 10 ^ 9, 0 \le b \le 10 ^ 9, 0 \le k_1 + k_2 \le 10)\\ x=0∑n?xk1?(ca×x+b?)k2?,(1≤n,a,c≤109,0≤b≤109,0≤k1?+k2?≤10)
a≥c,a′=a%c,k=aca \ge c, a' = a\ \%\ c, k = \frac{a}{c}a≥c,a′=a?%?c,k=ca?:
∑x=0nxk1(kx+a′×x+bc)k2∑x=0nxk1∑i=0k2Ck2i(kx)i(a′×x+bc)k2?i∑i=0k2(Ck2iki)∑x=0nxi+k1(a′×x+bc)k2?if(a,b,c,n,k1,k2)=∑i=0k2Ck2ikif(a′,b,c,n,i+k1,k2?i)\sum_{x = 0} ^{n} x ^{k_1} \left(kx + \frac{a' \times x + b}{c} \right) ^ {k_2}\\ \sum_{x = 0} ^{n} x ^{k_1}\sum_{i = 0} ^{k_2} C_{k_2} ^{i} (kx) ^ i \left(\frac{a' \times x + b}{c} \right) ^{k_2 - i}\\ \sum_{i = 0} ^{k_2} \left(C_{k_2} ^{i} k ^{i}\right) \sum_{x = 0} ^{n} x ^{i + k_1} \left( \frac{a' \times x + b}{c} \right) ^{k_2 - i}\\ f(a, b, c, n, k_1, k_2) = \sum_{i = 0} ^{k_2} C_{k_2} ^{i} k ^{i} f(a', b, c, n, i + k_1, k_2 - i)\\ x=0∑n?xk1?(kx+ca′×x+b?)k2?x=0∑n?xk1?i=0∑k2??Ck2?i?(kx)i(ca′×x+b?)k2??ii=0∑k2??(Ck2?i?ki)x=0∑n?xi+k1?(ca′×x+b?)k2??if(a,b,c,n,k1?,k2?)=i=0∑k2??Ck2?i?kif(a′,b,c,n,i+k1?,k2??i)
b≥c,b′=b%c,k=bcb \ge c, b' = b \ \%\ c, k = \frac{c}b≥c,b′=b?%?c,k=cb?:
∑x=0nxk1(a×x+b′c+k)k2∑x=0nxk1∑i=0k2Ck2iki(a×x+b′c)k2?i∑i=0k2Ck2iki∑x=0nxk1(a×x+b′c)k2?if(a,b,c,n,k1,k2)=∑i=0k2Ck2ikif(a,b′,c,n,k1,k2?i)\sum_{x = 0} ^{n} x ^{k_1} \left(\frac{a \times x + b'}{c} + k \right) ^{k_2}\\ \sum_{x = 0} ^{n} x ^{k_1} \sum_{i = 0} ^{k_2} C_{k_2} ^{i} k ^{i} \left( \frac{a \times x + b'}{c} \right) ^{k_2 - i}\\ \sum_{i = 0} ^{k_2} C_{k_2} ^{i} k^{i} \sum_{x = 0} ^{n} x ^{k_1} \left(\frac{a \times x + b'}{c} \right) ^{k_2 - i}\\ f(a, b, c, n, k_1, k_2) = \sum_{i = 0} ^{k_2} C_{k_2} ^{i} k ^{i} f(a, b', c, n, k_1, k_2 - i)\\ x=0∑n?xk1?(ca×x+b′?+k)k2?x=0∑n?xk1?i=0∑k2??Ck2?i?ki(ca×x+b′?)k2??ii=0∑k2??Ck2?i?kix=0∑n?xk1?(ca×x+b′?)k2??if(a,b,c,n,k1?,k2?)=i=0∑k2??Ck2?i?kif(a,b′,c,n,k1?,k2??i)
a<c,b<c,m=a×n+bca < c , \ b < c, m = \frac{a \times n + b}{c}a<c,?b<c,m=ca×n+b?:
nk=∑i=1nik?(i?1)k∑x=0nxk1(a×x+bc)k2∑x=0nxk1∑i=1m(ik2?(i?1)k2)[a×x+bc≥i]∑i=0m?1((i+1)k2?ik2)∑x=0nxk1[a×x+bc≥i+1]∑i=0m?1((i+1)k2?ik2)∑x=0nxk1?∑i=0m?1((i+1)k2?ik2)∑x=0c×i+c?b?1axk1n ^{k} = \sum_{i = 1} ^{n} i ^{k} - (i - 1) ^{k}\\ \sum_{x = 0} ^{n} x ^{k_1} \left(\frac{a \times x + b}{c}\right) ^ {k_2}\\ \sum_{x = 0} ^{n} x ^{k_1} \sum_{i = 1} ^{m} \left(i ^{k_2} - (i - 1) ^{k_2}\right)[\frac{a \times x + b}{c} \ge i]\\ \sum_{i = 0} ^{m - 1} \left((i + 1) ^{k_2} - i ^{k_2} \right) \sum_{x = 0} ^{n} x^{k_1} [\frac{a \times x + b}{c} \ge i + 1]\\ \sum_{i = 0} ^{m - 1} \left((i + 1) ^{k_2} - i ^{k_2} \right) \sum_{x = 0} ^{n} x^{k_1} - \sum_{i = 0} ^{m - 1} \left((i + 1) ^{k_2} - i ^{k_2} \right) \sum_{x = 0} ^{\frac{c \times i + c - b - 1}{a}} x ^{k_1}\\ nk=i=1∑n?ik?(i?1)kx=0∑n?xk1?(ca×x+b?)k2?x=0∑n?xk1?i=1∑m?(ik2??(i?1)k2?)[ca×x+b?≥i]i=0∑m?1?((i+1)k2??ik2?)x=0∑n?xk1?[ca×x+b?≥i+1]i=0∑m?1?((i+1)k2??ik2?)x=0∑n?xk1??i=0∑m?1?((i+1)k2??ik2?)x=0∑ac×i+c?b?1??xk1?
前項可以通過插值得到,我們考慮后項求和,
不難得到(i+1)k2?ik2(i + 1) ^{k_2} - i ^{k_2}(i+1)k2??ik2?,是一個k2?1k_2 - 1k2??1次的多項式,我們可以通過插值預處理出其系數,設其為A(x)A(x)A(x)。
對于∑i=0c×i+c?b?1axk1\sum\limits_{i = 0} ^{\frac{c \times i + c - b - 1}{a}} x ^{k_1}i=0∑ac×i+c?b?1??xk1?,也是一個多項式,最高次冪為k1+1k_1 + 1k1?+1,設其為B(x)B(x)B(x)。
∑i=0m?1((i+1)k2?ik2)∑x=0nxk1?∑x=0m?1∑i=0k2?1Aixi∑j=0k1+1Bj(c×x+c?b?1a)j∑i=0m?1((i+1)k2?ik2)∑x=0nxk1?∑i=0k2?1Ai∑j=0k1+1Bj∑x=0m?1xi(c×x+c?b?1a)jf(a,b,c,n,k1,k2)=∑i=0m?1((i+1)k2?ik2)∑x=0nxk1?∑i=0k2?1∑j=0k1+1Ai×Bj×f(a′,b′,c′,m?1,i,j)\sum_{i = 0} ^{m - 1} \left((i + 1) ^{k_2} - i ^{k_2} \right) \sum_{x = 0} ^{n} x^{k_1} - \sum_{x = 0} ^{m - 1} \sum_{i = 0} ^{k_2 - 1} A_i x ^{i} \sum_{j = 0} ^{k_1 + 1} B_j \left( \frac{c \times x + c - b - 1}{a} \right) ^{j}\\ \sum_{i = 0} ^{m - 1} \left((i + 1) ^{k_2} - i ^{k_2} \right) \sum_{x = 0} ^{n} x^{k_1} - \sum_{i = 0} ^{k_2 - 1} A_i \sum_{j = 0} ^{k_1 + 1} B_j \sum_{x = 0} ^{m - 1} x ^{i} \left( \frac{c \times x + c - b - 1}{a} \right) ^{j}\\ f(a, b, c, n, k_1, k_2) = \sum_{i = 0} ^{m - 1} \left((i + 1) ^{k_2} - i ^{k_2} \right) \sum_{x = 0} ^{n} x^{k_1} - \sum_{i = 0} ^{k_2 - 1} \sum_{j = 0} ^{k_1 + 1} A_i \times B_j \times f(a', b', c', m - 1, i, j)\\ i=0∑m?1?((i+1)k2??ik2?)x=0∑n?xk1??x=0∑m?1?i=0∑k2??1?Ai?xij=0∑k1?+1?Bj?(ac×x+c?b?1?)ji=0∑m?1?((i+1)k2??ik2?)x=0∑n?xk1??i=0∑k2??1?Ai?j=0∑k1?+1?Bj?x=0∑m?1?xi(ac×x+c?b?1?)jf(a,b,c,n,k1?,k2?)=i=0∑m?1?((i+1)k2??ik2?)x=0∑n?xk1??i=0∑k2??1?j=0∑k1?+1?Ai?×Bj?×f(a′,b′,c′,m?1,i,j)
只要預處理各種插值系數,即可在O(T×k4log?n)O(T \times k ^4 \log n)O(T×k4logn)的復雜度內求解。
總結
以上是生活随笔為你收集整理的#138. 类欧几里得算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【开篇】STM32F103C8T6 含义
- 下一篇: 公布独立游戏作品!任天堂官宣11月直面会