How to calculate floor sum?

Revision en7, by YipChip, 2025-03-24 15:01:42

The floor sum is an algorithm that solves for the value of a function approximating $$$f(a,b,c,n)=\sum\limits_{i=0}^n\lfloor\frac{ai+b}{c}\rfloor$$$ in $$$O(\log n)$$$ time complexity.

Maybe you haven't heard of it, but you can get the algorithm by simple mathematical derivation.

To calculate the sum of the functions, $$$n \le 10^{9}$$$

$$$f(a,b,c,n)=\sum_{i=0}^n\bigg\lfloor\frac{ai+b}{c}\bigg\rfloor$$$
$$$g(a,b,c,n)=\sum_{i=0}^n\bigg\lfloor\frac{ai+b}{c}\bigg\rfloor^2$$$
$$$h(a,b,c,n)=\sum_{i=0}^ni\bigg\lfloor\frac{ai+b}{c}\bigg\rfloor$$$

(I) when $$$a \lt c$$$ and $$$b \lt c$$$.

First simplify $$$f(a,b,c,n)$$$.

$$$\begin{aligned} f(a,b,c,n)&=\sum_{i=0}^n\bigg\lfloor\frac{ai+b}{c}\bigg\rfloor\\&=\sum_{i=0}^n\sum_{j=1}^{\lfloor\frac{ai+b}{c}\rfloor}\bigg[j\le\bigg\lfloor\frac{ai+b}{c}\bigg\rfloor\bigg]\\&=\sum_{i=0}^n\sum_{j=1}^{\lfloor\frac{an+b}{c}\rfloor}\bigg[j\le\bigg\lfloor\frac{ai+b}{c}\bigg\rfloor\bigg]\\&=\sum_{i=0}^n\sum_{j=0}^{\lfloor\frac{an+b}{c}\rfloor-1}\bigg[j+1\le\bigg\lfloor\frac{ai+b}{c}\bigg\rfloor\bigg]\\&=\sum_{i=0}^n\sum_{j=0}^{\lfloor\frac{an+b}{c}\rfloor-1}\bigg[cj+c\le{ai+b}\bigg]\\&=\sum_{i=0}^n\sum_{j=0}^{\lfloor\frac{an+b}{c}\rfloor-1}\bigg[cj+c-b\le{ai}\bigg]\\&=\sum_{i=0}^n\sum_{j=0}^{\lfloor\frac{an+b}{c}\rfloor-1}\bigg[cj+c-b - 1 \lt {ai}\bigg]\\&=\sum_{i=0}^n\sum_{j=0}^{\lfloor\frac{an+b}{c}\rfloor-1}\bigg[\bigg\lfloor\frac{cj+c-b - 1}{a}\bigg\rfloor \lt i\bigg]\\&=\sum_{j=0}^{\lfloor\frac{an+b}{c}\rfloor-1}\sum_{i=0}^n\bigg[\bigg\lfloor\frac{cj+c-b - 1}{a}\bigg\rfloor \lt i\bigg]\\&=\sum_{j=0}^{\lfloor\frac{an+b}{c}\rfloor-1}\sum_{i=\lfloor\frac{cj+c-b - 1}{a}\rfloor+1}^n1\\&=\sum_{j=0}^{\lfloor\frac{an+b}{c}\rfloor-1}\bigg(n-\bigg\lfloor\frac{cj+c-b - 1}{a}\bigg\rfloor\bigg)\\&=n\bigg\lfloor\frac{an+b}{c}\bigg\rfloor-\sum_{j=0}^{\lfloor\frac{an+b}{c}\rfloor-1}\bigg\lfloor\frac{cj+c-b - 1}{a}\bigg\rfloor\\&=n\bigg\lfloor\frac{an+b}{c}\bigg\rfloor-f(c,c+b-1,a,\bigg\lfloor\frac{an+b}{c}\bigg\rfloor-1)\end{aligned}$$$

Let $$$m = \frac{an+b}{c}\rfloor$$$, then we have: $$$f(a,b,c) = (frac{an+b}{c}\rfloor-1)$$$.

$$$f(a,b,c,n) = nm-f(c,c)$$$
Tags math, floor sum

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en29 English YipChip 2025-03-26 06:18:26 2
en28 English YipChip 2025-03-25 05:33:43 0 (published)
en27 English YipChip 2025-03-25 05:30:35 359 (saved to drafts)
en26 English YipChip 2025-03-25 05:06:19 2
en25 English YipChip 2025-03-25 05:03:42 454
en24 English YipChip 2025-03-24 18:01:07 173
en23 English YipChip 2025-03-24 15:32:43 0 (published)
en22 English YipChip 2025-03-24 15:31:41 16 (saved to drafts)
en21 English YipChip 2025-03-24 15:29:12 0 (published)
en20 English YipChip 2025-03-24 15:28:45 6
en19 English YipChip 2025-03-24 15:27:44 16
en18 English YipChip 2025-03-24 15:26:36 35
en17 English YipChip 2025-03-24 15:25:26 54
en16 English YipChip 2025-03-24 15:24:05 23
en15 English YipChip 2025-03-24 15:22:29 36
en14 English YipChip 2025-03-24 15:19:57 37
en13 English YipChip 2025-03-24 15:18:25 47
en12 English YipChip 2025-03-24 15:17:27 39
en11 English YipChip 2025-03-24 15:16:59 342
en10 English YipChip 2025-03-24 15:12:53 7099
en9 English YipChip 2025-03-24 15:04:47 615
en8 English YipChip 2025-03-24 15:02:43 55
en7 English YipChip 2025-03-24 15:01:42 2
en6 English YipChip 2025-03-24 15:01:29 2
en5 English YipChip 2025-03-24 15:00:39 30
en4 English YipChip 2025-03-24 14:59:33 38
en3 English YipChip 2025-03-24 14:57:38 2
en2 English YipChip 2025-03-24 14:57:17 1967
en1 English YipChip 2025-03-24 14:52:32 203 Initial revision (saved to drafts)