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 Macchiato20 天前
Leetcode 3791. Number of Balanced Integers in a Range
leetcode hard·leetcode周赛482·leetcode 3791
Espresso Macchiato21 天前
Leetcode 3781. Maximum Score After Binary Swaps
·leetcode medium·leetcode3781·leetcode双周赛172
Espresso Macchiato21 天前
Leetcode 3771. Total Score of Dungeon Runs
leetcode medium·leetcode 3771·leetocde周赛479
Espresso Macchiato1 个月前
Leetcode 3767. Maximize Points After Choosing K Tasks
leetcode medium·leetcode双周赛171·leetcode 3767
Espresso Macchiato1 个月前
Leetcode 3765. Complete Prime Number
leetcode medium·leetcode双周赛171·leetcode 3765
Espresso Macchiato1 个月前
Leetcode 3766. Minimum Operations to Make Binary Palindrome
leetcode medium·leetcode 3766·leetcode双周赛171
Espresso Macchiato2 个月前
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