Skip to main content

floor_sum_i64

Function floor_sum_i64 

Source
pub fn floor_sum_i64(l: i64, r: i64, a: i64, b: i64, m: u64) -> i64
Expand description

Sum of Floor of Linear mod 2^64

$$\sum_{i=l}^{r-1}\left\lfloor\frac{a\times i+b}{m}\right\rfloor$$

Examples found in repository?
crates/competitive/src/math/floor_sum.rs (line 132)
127pub fn floor_sum_range_freq(l: i64, r: i64, a: i64, b: i64, m: u64, range: Range<i64>) -> i64 {
128    if range.start >= range.end {
129        return 0;
130    }
131    assert!(0 <= range.start && range.end <= m as i64);
132    let x1 = floor_sum_i64(l, r, a, b - range.start, m);
133    let x2 = floor_sum_i64(l, r, a, b - range.end, m);
134    x1 - x2
135}