可被 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;
}
}
本文来自博客园,作者:wuliOVO,转载请注明原文链接:https://www.cnblogs.com/wuli-Zhang/p/17388550.html