rustgym 0.2.0

rustgym solutions
Documentation
struct Solution;

impl Solution {
    fn num_water_bottles(num_bottles: i32, num_exchange: i32) -> i32 {
        let mut full = num_bottles;
        let mut empty = 0;
        let mut res = 0;
        while full > 0 {
            res += full;
            empty += full;
            full = empty / num_exchange;
            empty %= num_exchange;
        }
        res
    }
}

#[test]
fn test() {
    let num_bottles = 9;
    let num_exchange = 3;
    let res = 13;
    assert_eq!(Solution::num_water_bottles(num_bottles, num_exchange), res);
    let num_bottles = 15;
    let num_exchange = 4;
    let res = 19;
    assert_eq!(Solution::num_water_bottles(num_bottles, num_exchange), res);
    let num_bottles = 15;
    let num_exchange = 4;
    let res = 19;
    assert_eq!(Solution::num_water_bottles(num_bottles, num_exchange), res);
    let num_bottles = 5;
    let num_exchange = 5;
    let res = 6;
    assert_eq!(Solution::num_water_bottles(num_bottles, num_exchange), res);
    let num_bottles = 2;
    let num_exchange = 3;
    let res = 2;
    assert_eq!(Solution::num_water_bottles(num_bottles, num_exchange), res);
}