All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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