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;
}
};