首页 > 编程语言 > 详细

类欧几里得算法学习笔记

时间:2019-12-04 20:20:05      阅读:95      评论:0      收藏:0      [点我收藏+]

如何求\(\sum_{i=0}^ni^{k1}\lfloor\frac{ai+b}{c}\rfloor^{k2}\)\((1\leqslant n,a,b,c\leqslant10^9,k1+k2\leqslant 10)\)

\(f(n,a,b,c)[k1][k2]\)表示原式的值,则:

\(a\geqslant c\),设\(a=pc+q(0\leqslant q<c)\),则
\[\begin{align} &\;\;\;\;\;f(n,a,b,c)[k1][k2]\&=\sum_{i=0}^ni^{k1}\lfloor\frac{ai+b}{c}\rfloor^{k2}\&=\sum_{i=0}^ni^{k1}(pi+\lfloor\frac{qi+b}{c}\rfloor)^{k2}\&=\sum_{i=0}^ni^{k1}\sum_{j=0}^{k2}\text{C}_{k2}^jp^ji^j\lfloor\frac{qi+b}{c}\rfloor^{k2-j}\&=\sum_{j=0}^{k2}\text{C}_{k2}^jp^j\sum_{i=0}^ni^{k1+j}\lfloor\frac{qi+b}{c}\rfloor^{k2-j}\&=\sum_{j=0}^{k2}\text{C}_{k2}^jp^jf(n,q,b,c)[k1+j][k2-j] \end{align}\]
只需递归计算\(f(n,q,b,c)\)\(O(k^3)\)处理即可。
\(b\geqslant c\),设\(b=pc+q(0\leqslant q<c)\),则
\[\begin{align} &\;\;\;\;\;f(n,a,b,c)[k1][k2]\&=\sum_{i=0}^ni^{k1}\lfloor\frac{ai+b}{c}\rfloor^{k2}\&=\sum_{i=0}^ni^{k1}(p+\lfloor\frac{ai+q}{c}\rfloor)^{k2}\&=\sum_{i=0}^ni^{k1}\sum_{j=0}^{k2}\text{C}_{k2}^jp^j\lfloor\frac{ai+q}{c}\rfloor^{k2-j}\&=\sum_{j=0}^{k2}\text{C}_{k2}^jp^j\sum_{i=0}^ni^{k1}\lfloor\frac{ai+q}{c}\rfloor^{k2-j}\&=\sum_{j=0}^{k2}\text{C}_{k2}^jp^jf(n,a,q,c)[k1][k2-j] \end{align}\]
只需递归计算\(f(n,a,q,c)\)\(O(k^3)\)处理即可。

(to be continued...)

类欧几里得算法学习笔记

原文:https://www.cnblogs.com/ztc03/p/11973996.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!