码迷,mamicode.com
首页 > 其他好文 > 详细

类欧几里得小记

时间:2018-05-28 12:36:25      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:nts   个数   技术   sum   sdn   text   b2c   math   span   

前言

每次看了很快就忘了,干脆写一篇博客,来加深记忆。

定义


\[f(a,b,c,n)=\sum_{i=0}^{n}\lfloor\dfrac{ai+b}{c}\rfloor\]
\[g(a,b,c,n)=\sum_{i=0}^{n}i\lfloor\dfrac{ai+b}{c}\rfloor\]
\[g(a,b,c,n)=\sum_{i=0}^{n}{\lfloor\dfrac{ai+b}{c}\rfloor}^2\]
\[m=\lfloor\dfrac{an+b}{c}\rfloor\]

一、f(a,b,c,n)

当a>=c时,\(=f(a\%c,b,c,n)+\lfloor\dfrac{a}{c}\rfloor*n(n+1)/2\)
当b>=c时,\(=f(a,b\%c,c,n)+\lfloor\dfrac{b}{c}\rfloor*(n+1)\)
然后
\[=\sum_{i=0}^{n}\lfloor\dfrac{ai+b}{c}\rfloor\]
我们将\(\dfrac{ai+b}{c}\)当作一条以i为自变量的直线,
技术分享图片
于是原式就等于这个直角梯形内的整点个数,
\[=\sum_{i=0}^{n}\sum_{j=1}^{m}[\lfloor\dfrac{ai+b}{c}\rfloor>=j]\]
\[=\sum_{i=0}^{n}\sum_{j=0}^{m-1}[\lfloor\dfrac{ai+b}{c}\rfloor>=j+1]\]
\[=\sum_{i=0}^{n}\sum_{j=0}^{m-1}[ai+b>=jc+c]\]
\[=\sum_{i=0}^{n}\sum_{j=0}^{m-1}[ai+b>jc+c-1]\]
\[=\sum_{i=0}^{n}\sum_{j=0}^{m-1}[ai>jc+c-b-1]\]
\[=\sum_{i=0}^{n}\sum_{j=0}^{m-1}[i>\lfloor\dfrac{jc+c-b-1}{a}\rfloor]\]
\[=\sum_{j=0}^{m-1}\sum_{i=0}^{n}[i>\lfloor\dfrac{jc+c-b-1}{a}\rfloor]\]
\[=\sum_{j=0}^{m-1}(n-\sum_{i=0}^{n}[i<=\lfloor\dfrac{jc+c-b-1}{a}\rfloor])\]
\[=nm-f(c,c-b-1,a,m-1)\]
时间复杂度类似与扩展欧几里得。

二、g(a,b,c,n)

//坑

类欧几里得小记

标签:nts   个数   技术   sum   sdn   text   b2c   math   span   

原文地址:https://www.cnblogs.com/chen1352/p/9099486.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!