码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-07-22 13:49:57      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:返回   ==   包含   mod   解释   直接   输入   ems   来源   

给定正整数 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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/smallest-integer-divisible-by-k

首先想到的是搞个循环一直除直到得到结果,而对于return -1的情况就要找规律了

  • 1 % 5 等于 1
  • 11 % 5 等于 1
  • 111 % 5 等于 1
  • 1111 % 5 等于 1
  • 11111 % 5 等于 1
  • ...
  • 1 % 6 等于 1
  • 11 % 6 等于 5
  • 111 % 6 等于 3
  • 1111 % 6 等于 1
  • 11111 /% 6 等于 5
  • ...

会发现return -1的数会得到循环节,代码就好写了

 

class Solution:
    def smallestRepunitDivByK(self, K: int) -> int:
        if K%10 in [2,4,5,6,8,10]:
            return -1//先排掉一些明显的
        vis=set()
        mod=0
        for i in range(1,K+1):
            mod=(mod*10+1)%K
            if mod in vis:
                return -1//发现进入循环直接return -1
            if mod==0:
                return i
            vis.add(mod)

 

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

标签:返回   ==   包含   mod   解释   直接   输入   ems   来源   

原文地址:https://www.cnblogs.com/xxxsans/p/13359988.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!