leetcode 1015. 可被 K 整除的最小整数
题目描述:
给定正整数 K,你需要找出可以被 K 整除的、仅包含数字 1 的最小正整数 N。
返回 N 的长度。如果不存在这样的 N,就返回 -1。
示例 1:
输入:1
输出:1
解释:最小的答案是 N = 1,其长度为 1。
示例 2:
输入:2
输出:-1
解释:不存在可被 2 整除的正整数 N 。
示例 3:
输入:3
输出:3
解释:最小的答案是 N = 111,其长度为 3。
提示:
1 <= K <= 10^5
解法:
class Solution {
public:
int smallestRepunitDivByK(int K) {
if(K%2 == 0){
return -1;
}else{
int res = 1;
int val = 1;
unordered_set<int> st;
while(st.find(val) == st.end() && val%K != 0){
st.insert(val);
val %= K;
res++;
val *= 10;
val++;
}
if(st.find(val) == st.end()){
return res;
}else{
return -1;
}
}
}
int smallestRepunitDivByK2(int K) {
if(K%2 == 0){
return -1;
}else{
int res = 1;
int val = 1;
vector<bool> st(K, false);
val %= K;
st[0] = true;
while(st[val] == false){
st[val] = true;
res++;
val *= 10;
val++;
val %= K;
}
if(val == 0){
return res;
}else{
return -1;
}
}
}
};

浙公网安备 33010602011771号