歌名 - 歌手
0:00

    类欧几里得小记

    前言

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

    定义

    \[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)

    //坑

    posted @ 2018-05-28 12:10  无尽的蓝黄  阅读(159)  评论(0编辑  收藏  举报