diff --git a/src/problem/mod.rs b/src/problem/mod.rs index 32f04a9..1c6e6af 100644 --- a/src/problem/mod.rs +++ b/src/problem/mod.rs @@ -678,3 +678,5 @@ mod p2942_find_words_containing_character; mod p2131_longest_palindrome_by_concatenating_two_letter_words; mod p1857_largest_color_value_in_a_directed_graph; + +mod p2894_divisible_and_non_divisible_sums_difference; diff --git a/src/problem/p2894_divisible_and_non_divisible_sums_difference.rs b/src/problem/p2894_divisible_and_non_divisible_sums_difference.rs new file mode 100644 index 0000000..c7de579 --- /dev/null +++ b/src/problem/p2894_divisible_and_non_divisible_sums_difference.rs @@ -0,0 +1,31 @@ +/** + * [2894] Divisible and Non-divisible Sums Difference + */ +pub struct Solution {} + +// submission codes start here + +impl Solution { + pub fn difference_of_sums(n: i32, m: i32) -> i32 { + (1..=n) + .filter_map(|x| if x % m != 0 { Some(x) } else { None }) + .sum::() + - (1..=n) + .filter_map(|x| if x % m == 0 { Some(x) } else { None }) + .sum::() + } +} + +// submission codes end + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_2894() { + assert_eq!(19, Solution::difference_of_sums(10, 3)); + assert_eq!(15, Solution::difference_of_sums(5, 6)); + assert_eq!(-15, Solution::difference_of_sums(5, 1)); + } +}