Leetcode 3790. Smallest All-Ones Multiple

  • [Leetcode 3790. Smallest All-Ones Multiple](#Leetcode 3790. Smallest All-Ones Multiple)
    • [1. 解题思路](#1. 解题思路)
    • [2. 代码实现](#2. 代码实现)

1. 解题思路

这一题是leetcode周赛482的第三题,是一道medium的题目。

这一题的解法并不难,主要是数学证明的思路还是挺有意思的,是一个典型的数论问题的处理方法。

这一题的核心在于发现:

  • 如果 k k k不为 2 2 2和 5 5 5的倍数,那么在 1 , 11 , ⋯   , 11 ⋯ 1 1,11,\cdots,11\cdots1 1,11,⋯,11⋯1当中,必然存在某一个数恰好为 k k k的倍数,且长度不超过 k k k。

其中, 2 2 2和 5 5 5的倍数不满足题意这一点是可以直接看出来的,剩下的就是证明其余的数都可以找到一个长度不超过 k k k位的数。

我们是用反证法,假设不存在这么一个数,那么我们取 1 1 1到 1 ⋯ 1 1\cdots1 1⋯1这 k k k个数,其关于 k k k的余数至少有两个数是相同的,然后我们将其相减,则必然得到一个数 1 ⋯ 10 ⋯ 0 1\cdots10\cdots0 1⋯10⋯0恰好为 k k k的倍数,而这个数又可以写为 1 ⋯ 1 × 10 m 1\cdots1 \times 10^m 1⋯1×10m,显然 10 m 10^m 10m与 k k k互质,因此,其前缀 1 ⋯ 1 1\cdots1 1⋯1必然可以被 k k k整除,且其长度不超过 k k k,与假设矛盾。

因此,我们只需要一个循环,即可在至多 k k k次查找中找到目标的数。

2. 代码实现

给出python代码实现如下:

python 复制代码
class Solution:
    def minAllOneMultiple(self, k: int) -> int:
        if k % 2 == 0:
            return -1
        elif k % 5 == 0:
            return -1
        n, num = 1, 1
        while num % k != 0:
            num = (num * 10 + 1) % k
            n += 1
        return n

提交代码评测得到:耗时119ms,占用内存17.24MB。

相关推荐
Espresso Macchiato19 天前
Leetcode 3767. Maximize Points After Choosing K Tasks
leetcode medium·leetcode双周赛171·leetcode 3767
Espresso Macchiato19 天前
Leetcode 3765. Complete Prime Number
leetcode medium·leetcode双周赛171·leetcode 3765
Espresso Macchiato20 天前
Leetcode 3766. Minimum Operations to Make Binary Palindrome
leetcode medium·leetcode 3766·leetcode双周赛171
Espresso Macchiato1 个月前
Leetcode 3741. Minimum Distance Between Three Equal Elements II
滑动窗口·leetcode medium·leetcode 3741·leetcode周赛475
Espresso Macchiato3 个月前
Leetcode 3702. Longest Subsequence With Non-Zero Bitwise XOR
leetcode medium·异或操作·leetcode 3702·leetcode周赛470
Espresso Macchiato3 个月前
Leetcode 3694. Distinct Points Reachable After Substring Removal
滑动窗口·leetcode medium·leetcode双周赛166·leetcode 3694
Espresso Macchiato3 个月前
Leetcode 3698. Split Array With Minimum Difference
leetcode medium·分类讨论·leetcode周赛469·leetcode 3698
Espresso Macchiato4 个月前
Leetcode 3665. Twisted Mirror Path Count
动态规划·leetcode medium·leetcode 3665·leetcode双周赛164
Espresso Macchiato4 个月前
Leetcode 3669. Balanced K-Factor Decomposition
动态规划·质因数分解·leetcode medium·leetcode 3669·leetcode周赛465