可被 K 整除的最小整数

给定正整数 k,你需要找出可以被 k 整除的、仅包含数字 1 的最 正整数 n 的长度。

返回 n 的长度。如果不存在这样的 n ,就返回-1

注意: n 不符合 64 位带符号整数。

示例 1:

输入:k = 1
输出:1
解释:最小的答案是 n = 1,其长度为 1。

示例 2:

输入:k = 2
输出:-1
解释:不存在可被 2 整除的正整数 n 。

示例 3:

输入:k = 3
输出:3
解释:最小的答案是 n = 111,其长度为 3。

提示:

  • 1 <= k <= 105
    来源:力扣(LeetCode)

题解

点击查看代码
class Solution {
    public int smallestRepunitDivByK(int k) {
        int res = 1, len = 1;//初始值和初始长度
        //排除偶数和5的倍数
        if(k % 2 == 0 || k % 5 == 0) return -1;
        //为1直接返回初始长度
        if(k == 1) return 1;
        //循环求余
        while(res != 0){
            res = (res * 10 + 1) % k;
            len++;
        }
        return len;
    }
}
posted @ 2023-05-10 17:09  wuliOVO  阅读(23)  评论(0编辑  收藏  举报