Skip to main content

rustgym/leetcode/
_829_consecutive_numbers_sum.rs

1struct Solution;
2
3impl Solution {
4    fn consecutive_numbers_sum(n: i32) -> i32 {
5        let mut i = 2;
6        let mut res = 1;
7        while i * i < 2 * n {
8            if (n - i * (i - 1) / 2) % i == 0 {
9                res += 1;
10            }
11            i += 1;
12        }
13        res
14    }
15}
16
17#[test]
18fn test() {
19    let n = 5;
20    let res = 2;
21    assert_eq!(Solution::consecutive_numbers_sum(n), res);
22    let n = 9;
23    let res = 3;
24    assert_eq!(Solution::consecutive_numbers_sum(n), res);
25    let n = 15;
26    let res = 4;
27    assert_eq!(Solution::consecutive_numbers_sum(n), res);
28    let n = 4;
29    let res = 1;
30    assert_eq!(Solution::consecutive_numbers_sum(n), res);
31}