leetcode-728-Self Dividing Numbers
题目描述:
A self-dividing number is a number that is divisible by every digit it contains.
For example, 128 is a self-dividing number because 128 % 1 == 0
, 128 % 2 == 0
, and 128 % 8 == 0
.
Also, a self-dividing number is not allowed to contain the digit zero.
Given a lower and upper number bound, output a list of every possible self dividing number, including the bounds if possible.
Example 1:
Input: left = 1, right = 22 Output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]
Note:
- The boundaries of each input argument are
1 <= left <= right <= 10000
.
要完成的函数:
vector<int> selfDividingNumbers(int left, int right)
说明:
1、要判断一个数是不是可自分的,看该数字是不是可整除数字上的每一位。比如128可整除8,可整除2,可整除1,所以128可自分。
现在给定一个左界限和一个右界限,要求返回包含左界限和右界限在内的所有可自分数。
2、最简单的思路就是,从左界限开始,逐个判断是不是可自分数,直到右界限。
每个数判断的过程也很简单。如下述代码:
bool dividable(int a){int b=a,t=0;while(b){t=b%10;if(t==0||a%t!=0)//如果出现某一位是0或者不整除的情况return false;b/=10;}return true;}vector<int> selfDividingNumbers(int left, int right) {vector<int>res;for(int i=left;i<=right;i++){if(dividable(i))res.push_back(i);}return res;}
代码十分简单,实测4ms,beats 100% of cpp submissions。
3、一些其他想法(不太重要):
其实最开始的时候,笔者对于上述做法,觉得应该会超时的,可能还得像输出质数那道题一样,能够生成的就不要用逐个判断。
因此在想一些条件,比如10以内的数,全都是可自分的。
比如十几的数,要逐个判断。
比如二十几的数,只需要判断22,24,26,28,因为要整除十位的2,需要个位是2的整数倍。
比如三十几的数,只需要判断33,36,39,因为要整除十位的3,需要个位是3的整数倍。
四十几,就只有44,48。
五十几,就只有55。六十几,66。七十几,77。八十几,88。九十几,99。
一百以上的,从111开始考虑(之前都带0),百位是1不需要考虑,后面的十位和个位,和两位数一样的判断逻辑。
二百以上的,还是可以推出一些规则,比如248,后面的十位和个位需要是百位数值2的整数倍。
但是整体来看这些规则未免有点复杂,所以最后笔者也就没有实现出来,在这里做一些想法记录。
同学们有其他想法的,欢迎在评论区留言!
转载于:https://www.cnblogs.com/chenjx85/p/9032909.html
leetcode-728-Self Dividing Numbers相关推荐
- Python 解leetcode:728. Self Dividing Numbers
思路:循环最小值到最大值,对于每一个值,判断每一位是否能被该值整除即可,思路比较简单. class Solution(object):def selfDividingNumbers(self, lef ...
- 728. Self Dividing Numbers
题目描述: A self-dividing number is a number that is divisible by every digit it contains. For example, ...
- LeetCode之Add Two Numbers
LeetCode之Add Two Numbers 题目:You are given two linked lists representing two non-negative numbers. Th ...
- Leetcode 448. Find All Numbers Disappeared in an Array
Leetcode 448. Find All Numbers Disappeared in an Array Add to List Description Submission Solutions ...
- LeetCode 445. Add Two Numbers II
LeetCode 445. Add Two Numbers II Solution1:我的答案 利用了栈,这样就不用翻转链表了... /*** Definition for singly-linked ...
- 【注意】LeetCode 2. Add Two Numbers
LeetCode 2. Add Two Numbers 这种沙比提怎么都写不对了??? Solution1:学习这种写法 /*** Definition for singly-linked list. ...
- C#LeetCode刷题之#728-自除数(Self Dividing Numbers)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3889 访问. 自除数 是指可以被它包含的每一位数除尽的数. 例如 ...
- LeetCode 445. Add Two Numbers II--面试算法题--C++,Python解法
题目地址:Add Two Numbers II - LeetCode You are given two non-empty linked lists representing two non-neg ...
- LeetCode:2. Add Two Numbers
https://leetcode.com/problems/add-two-numbers/description/ 内容描述 You are given two non-empty linked l ...
- [Leetcode] 445. Add Two Numbers II
问题: https://leetcode.com/problems/add-two-numbers-ii/#/description 思路:该题与"415. Add Strings" ...
最新文章
- 官宣:程序员被纳入新生代农民工!
- 洛谷1522牛的旅行
- 在线考试计算机文化基础,计算机文化基础在线考试.pdf
- 前端请求,后台http 连接输出流交给ServeletResponse 下载文件
- Dapper操作MySQL数据库获取JSON数据中文乱码
- html5自动旋转图片,HTML5画布旋转图片
- Windows10-1909各个版本进行下载地址汇总
- 苹果官宣春季发布会!不止有iPhone SE 3,还有紫色iPhone 13 Pro?
- 一个博友的SQL问题解决过程
- c语言 extern_C语言入门笔记(三)
- 基于粒子群优化算法的函数寻优算法
- JavaScript案例分享+复盘——小米闪购界面
- 关于程序设计大赛环境部署的WBS图
- 提升计算机科学素养,中职学生计算机科学与技术专业素养提升策略
- Policy Center > Permissions and APIs that Access Sensitive Information
- 一刀工具箱 - 成语查询工具
- python多线程详解 Python 垃圾回收机制
- scrapy学习笔记——HTML页面解析
- 十四、51单片机之AD转换
- NSIS 之初体验 制作打印机i5100windows安装程序
热门文章
- 计算机任务驱动法教学应用,任务驱动教学法在计算机教学中的应用
- 井下三专两闭锁的内容_局部通风机三专两闭锁具体规定
- c语言while可以改为when,控制流:if、when、for、while
- java 生成.sh文件,Java 生成Bat或SH文件,调用Sqlldr安插数据到Oracle
- flask运行多个服务器,与Flask服务器同时运行while循环
- code标签无法渲染html,【菜鸟笔记】记一次django无法正常在ie和edge浏览器渲染html页面-站长资讯中心...
- java人力资源管理系统设计_人力资源管理系统——《Java Web程序设计》课程设计...
- mina mysql_Mina学习笔记(二)
- (3) Hibernate的查询 标准(Criteria)查询
- 计算机考研:计算机网络五大考点解析