1015. Smallest Integer Divisible by K

Given a positive integer K, you need to find the length of the smallest positive integer N such that N is divisible by K, and N only contains the digit 1.

Return the length of N. If there is no such N, return -1.

Note: N may not fit in a 64-bit signed integer.

 

Example 1:

Input: K = 1
Output: 1
Explanation: The smallest answer is N = 1, which has length 1.

Example 2:

Input: K = 2
Output: -1
Explanation: There is no such positive integer N divisible by 2.

Example 3:

Input: K = 3
Output: 3
Explanation: The smallest answer is N = 111, which has length 3.

 

Constraints:

  • 1 <= K <= 105

Rust Solution

struct Solution;

impl Solution {
    fn smallest_repunit_div_by_k(k: i32) -> i32 {
        let mut x: i32 = 0;
        for i in 0..k {
            x *= 10;
            x += 1;
            x %= k;
            if x % k == 0 {
                return i + 1;
            }
        }
        -1
    }
}

#[test]
fn test() {
    let k = 1;
    let res = 1;
    assert_eq!(Solution::smallest_repunit_div_by_k(k), res);
    let k = 2;
    let res = -1;
    assert_eq!(Solution::smallest_repunit_div_by_k(k), res);
    let k = 3;
    let res = 3;
    assert_eq!(Solution::smallest_repunit_div_by_k(k), res);
}

Having problems with this solution? Click here to submit an issue on github.