【每日一题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


目录
相关文章
|
6天前
【每日一题Day359】LC2520统计能整除数字的位数 | 数学模拟
【每日一题Day359】LC2520统计能整除数字的位数 | 数学模拟
31 0
|
6天前
【每日一题Day221】LC2455可被三整除的偶数的平均值 | 模拟
【每日一题Day221】LC2455可被三整除的偶数的平均值 | 模拟
27 0
|
6天前
【每日一题Day289】LC1749任意子数组和的绝对值的最大值 | dp
【每日一题Day289】LC1749任意子数组和的绝对值的最大值 | dp
22 0
|
6天前
【每日一题Day185】LC1027最长等差数列 | dp
【每日一题Day185】LC1027最长等差数列 | dp
23 0
|
6天前
【每日一题Day205】LC2441与对应负数同时存在的最大正整数 | 哈希表
【每日一题Day205】LC2441与对应负数同时存在的最大正整数 | 哈希表
26 1
|
6天前
|
算法
【每日一题Day349】LC260只出现一次的数字 III | 位运算
【每日一题Day349】LC260只出现一次的数字 III | 位运算
23 0
|
6天前
|
存储
【每日一题Day253】LC2两数相加 | 链表模拟
【每日一题Day253】LC2两数相加 | 链表模拟
17 0
|
6天前
【每日一题Day210】LC1073负二进制数相加 | 模拟
【每日一题Day210】LC1073负二进制数相加 | 模拟
16 0
|
6天前
|
算法
容斥原理:能被整除的数
容斥原理:能被整除的数
|
6天前
【每日一题Day299】LC2235两整数相加
【每日一题Day299】LC2235两整数相加
19 0