Leetcode 1015. Smallest Integer Divisible by K
思路显然是暴力枚举.
但是两个问题:
1.当1的位数非常大时,模运算很费时间,会超时.
其实每次不用完全用'11111...'来%K,上一次的余数*10+1后再%K就行.
证明:
令f(n)=111111...(n个1);
g(n)=f(n)%K
因为f(n)=f(n-1)*10+1
所以f(n)%K=(f(n-1)*10+1)%K
即g(n)=g(n-1)*10+1
2.枚举何时停止?
一种方法是可以设置一个大数,比如10的6次方,可以Accepted.
更精确的方法是:从1个1到K个1,如果这里都没有答案,后面也没了.
因为K的余数不包括0的话有K-1个,我们算了K个,K个里面没有0的话,里面必然至少有两个相等的(抽屉原理),而根据第一个问题所示,相邻的余数有关系,所以一相等之后就是重复循环这些数了,前面找不到后面也肯定没有了.例如K=6:
- 1 % 6 = 1
- 11 % 6 = 5
- 111 % 6 = 3
- 1111 % 6 = 1
- 11111 % 6 = 5
- 111111 % 6 = 3
class Solution:def smallestRepunitDivByK(self, K: int) -> int:if K % 2 == 0 or K % 5 == 0:return -1g = 0for i in range(1, K+1):g = (g * 10 + 1) % Kif g == 0:return ireturn -1
转载于:https://www.cnblogs.com/zywscq/p/10699120.html
Leetcode 1015. Smallest Integer Divisible by K相关推荐
- leetcode 974 Subarray Sums Divisible by K
leetcode 974 Subarray Sums Divisible by K 1.题目描述 2.解题思路 3.Python代码 1.题目描述 给定一个整数数组 A,返回其中元素之和可被 K 整除 ...
- leetcode 974. Subarray Sums Divisible by K
974. Subarray Sums Divisible by K 题意:给你一个数组A和一个数K,求改数组有多少连续子序列的和能被K整除. 思路:简单DP.假设sum[i]表示[0-i]的求和,那么 ...
- leetcode 974. Subarray Sums Divisible by K的解法(统计共同余数)
题目大意:给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续.非空)子数组的数目 大致思路:比如数组A = [1,2,1], K=2,那么1%2 =1,(1+2)%2=1,所以 {2}是符合 ...
- LeetCode 974. Subarray Sums Divisible by K--Python解法--数学题--取模求余
LeetCode 974. Subarray Sums Divisible by K–Python解法–数学题–取模求余 LeetCode题解专栏:LeetCode题解 LeetCode 所有题目总结 ...
- 【leetcode】974. Subarray Sums Divisible by K
题目如下: Given an array A of integers, return the number of (contiguous, non-empty) subarrays that have ...
- leetcode 面试题 17.14. 最小K个数 大顶堆 小顶堆 快排
leetcode 面试题 17.14. 最小K个数 [难度:中等] 设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 示例: 输入: arr = [1,3,5,7,2,4,6,8], ...
- 【LeetCode】863. All Nodes Distance K in Binary Tree 解题报告(Python)
[LeetCode]863. All Nodes Distance K in Binary Tree 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http ...
- LeetCode 973. 最接近原点的 K 个点(排序/优先队列/快排)
文章目录 1. 题目 2. 解题 2.1 排序 2.2 优先队列 2.3 快排思路 1. 题目 我们有一个由平面上的点组成的列表 points.需要从中找出 K 个距离原点 (0, 0) 最近的点. ...
- LeetCode 215. 数组中的第K个最大元素(快速排序)
1. 题目 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 ...
最新文章
- Apache、php、mysql默认安装路径
- [OS复习]设备管理4
- Windows10选择文件打开方式没有始终允许的解决方案
- Linux 访问文件的acl信息,linux文件权限管理与ACL访问控制列表
- 软件测试——进程调度(短作业优先调度算法+先来先服务算法)测试
- GoF23种设计模式之行为型模式之策略模式
- java生成点阵图_Android从SD卡读取图片并显示为点阵图
- Windows 7 测试体验
- COLING2018计算语言学进展
- 知乎python小项目_python进阶知乎
- zTree 树形中的搜索定位节点
- 高德地图导航和路径规划
- [INSHack2019]Passthru
- python与医学统计_python简单数据分析——医药数据分析
- 解决u盘插入电脑提示扫描并修复
- 计算器软件设计和计算机软件设计区别,基于LabVIEW的计算器程序设计
- 微信小程序上传Excel文件并分析上传值数据库
- javascript中的正则表达式语法
- (免费分享)基于springboot论坛bbs系统
- 史上最长最全!围绕故障管理谈SRE体系建设
热门文章
- 服务器内部错误_阿里云服务器被CC攻击怎么办
- node php go python_PHP 可能在未来十年内消失?
- java 表达式写法_java内置核心4大函数式接口写法和lambda表达式
- 2020年的前端该怎么学?不吹不黑
- php的注入点,Php注入点构造代码
- using在sql中是什么意思_扇贝英语地道表达法——“call for”是什么意思呢?
- 用账号连无线网怎么连接网络连接服务器,路由器怎么共用一个宽带账号
- linux 摄像头设置时间同步,linux系统设置时间同步
- python 进度条_6种酷炫Python运行进度条
- Linux 环境下NFS服务安装及配置