【每日一题Day202】LC1015可被 K 整除的最小整数 | 模运算

简介: 【每日一题Day202】LC1015可被 K 整除的最小整数 | 模运算

可被 K 整除的最小整数【LC1015】

给定正整数 k ,你需要找出可以被 k 整除的、仅包含数字 **1** 的最 正整数 n 的长度。

返回 n 的长度。如果不存在这样的 n ,就返回-1。

注意:n 不符合 64 位带符号整数。

枚举n+哈希表

  • 思路
    从小到大枚举n,第一个能被k整除的数的长度即为答案。枚举n时记录n模k的结果,如果重复出现相同的计算结果,那么不存在能被k整除的n,返回-1
  • 实现
class Solution {
    public int smallestRepunitDivByK(int k) {
        int len = 1;
        int n = 1 % k;
        boolean[] vis = new boolean[k + 1]; 
        while (!vis[n]){
            vis[n] = true;
            if (n == 0) return len;
            len++;
            n = (n * 10 + 1) % k;
        }
        return -1;
    }
}

image.png

class Solution {
    public int smallestRepunitDivByK(int k) {
        if (k % 2 == 0 || k % 5 == 0)
            return -1;
        int x = 1 % k;
        for (int i = 1; ; i++) { // 一定有解
            if (x == 0)
                return i;
            x = (x * 10 + 1) % k;
        }
    }
}
作者:灵茶山艾府
链接:https://leetcode.cn/problems/smallest-integer-divisible-by-k/solutions/2263780/san-chong-suan-fa-you-hua-pythonjavacgo-tk4cj/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

image.png


目录
相关文章
|
7月前
【每日一题Day205】LC2441与对应负数同时存在的最大正整数 | 哈希表
【每日一题Day205】LC2441与对应负数同时存在的最大正整数 | 哈希表
48 1
|
7月前
【每日一题Day359】LC2520统计能整除数字的位数 | 数学模拟
【每日一题Day359】LC2520统计能整除数字的位数 | 数学模拟
56 0
|
7月前
【每日一题Day289】LC1749任意子数组和的绝对值的最大值 | dp
【每日一题Day289】LC1749任意子数组和的绝对值的最大值 | dp
48 0
|
7月前
【每日一题Day221】LC2455可被三整除的偶数的平均值 | 模拟
【每日一题Day221】LC2455可被三整除的偶数的平均值 | 模拟
53 0
|
7月前
【每日一题Day185】LC1027最长等差数列 | dp
【每日一题Day185】LC1027最长等差数列 | dp
48 0
|
算法
【代码随想录】LC 209. 长度最小的子数组
利用两层循环,第一层循环枚举子数组的起点位置,第二层循环枚举子数组的终点位置,第二层循环中可以同时来统计当前子数组的和,如果符合题目条件则更新length,否则继续循环,直至两层循环结束,返回题目要求的值,算法结束。
62 0
|
7月前
【每日一题Day184】LC2413最小偶倍数 | 数学
【每日一题Day184】LC2413最小偶倍数 | 数学
34 0
|
7月前
【每日一题Day299】LC2235两整数相加
【每日一题Day299】LC2235两整数相加
33 0
|
7月前
【每日一题Day358】LC2698求一个整数的惩罚数 | 递归
【每日一题Day358】LC2698求一个整数的惩罚数 | 递归
56 0
|
7月前
【每日一题Day368】LC421数组中两个数的最大异或值 | 字典树
【每日一题Day368】LC421数组中两个数的最大异或值 | 字典树
33 0