g1001_1100.s1015_smallest_integer_divisible_by_k.Solution Maven / Gradle / Ivy
package g1001_1100.s1015_smallest_integer_divisible_by_k;
// #Medium #Hash_Table #Math #2022_02_25_Time_2_ms_(90.67%)_Space_40.5_MB_(14.47%)
/**
* 1015 - Smallest Integer Divisible by K\.
*
* Medium
*
* 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
**/
public class Solution {
public int smallestRepunitDivByK(int k) {
int n = 0;
if (k % 2 == 0 || k % 5 == 0) {
return -1;
}
int i = 1;
while (i <= k) {
n = (n * 10 + 1) % k;
if (n == 0) {
return i;
}
i++;
}
return -1;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy