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.