Leetcode 1022. 可被 K 整除的最小整数

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

 
 
  • 用户通过次数74
  • 用户尝试次数262
  • 通过次数75
  • 提交次数1115
  • 题目难度Medium

给定正整数 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) {
        set<int> s;
        int c = 1;
        int prod = 1%K;
        while(!s.count(prod)) { //没有碰到过
            if(prod == 0) {
                return c;
            }
            s.insert(prod);
            prod = (prod*10+1)%K; //这也能用mo来算。。
            cout << prod << " ";
            ++c;
        }
        return -1;
    }
};

——学到了

原文地址:https://www.cnblogs.com/cunyusup/p/10634134.html