0%

5.10每日

1015. 可被 K 整除的最小整数

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

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

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

题解

class Solution {
public:
    int smallestRepunitDivByK(int k) {
        // 初始化变量n为1%k,即1对k取模的结果
        int n = 1 % k;
        // 循环k次,查找由若干个数字1组成的数能否被k整除
        for (int i = 1; i <= k; ++i) {
            // 如果n能够被k整除,说明我们找到了符合条件的数
            if (n == 0) {
                // 返回由若干个数字1组成的数的长度
                return i;
            }
            // 如果n不能被k整除,继续迭代
            n = (n * 10 + 1) % k;
        }
        // 如果循环k次仍然没有找到符合条件的数,返回-1
        return -1;
    }
};