class Solution {
public:
int smallestRepunitDivByK(int k) {
int len = 1;
int res = 1 % k;//表示余数 (resid)
unordered_set <int> s; //无序的查找很快
s.insert(res); //插入余数1
while(res != 0) //当余数为0时退出循环
{
res = (res * 10 + 1 ) % k; //计算下一个余数
len++; //数字长度+1
if(s.find(res) != s.end()) //如果余数重复出现,则无解
{
return -1;
}
s.insert(res); //将余数插入集合
}
return len; //返回数字长度
}
};