当前位置: 首页 > news >正文

探索自除数:发现区间内的神奇数字

在这里插入图片描述

本篇博客会讲解力扣“728. 自除数”的解题思路,这是题目链接。

在这里插入图片描述
对于给定的正整数num,我们如何判断它是不是自除数呢?根据定义,我们只需要把num的每一位数字都取出来,判断能不能整除num,如果发现num的某一位数字时0或者无法整除num,就说明num不是自除数;反之,如果发现num的每一位数字都能整除num,就说明num是自除数。

那如何把num的每一位都取出来呢?这里介绍一种很常见的方法:反复进行“mod10除10”,即先mod10取出个位数,然后再除10把个位数去掉,反复进行这样的操作,就能取出num的每一位了。

bool isSelfDividing(int num){int tmp = num;// 取出每一位while (tmp){int digit = tmp % 10;// 包含0或者不能被整除,则不是自除数if (digit == 0 || num % digit){return false;}tmp /= 10;}// 每一位都能整除return true;
}int* selfDividingNumbers(int left, int right, int* returnSize){// 存储[left, right]的自除数int* ret = (int*)malloc(sizeof(int) * (right - left + 1));int pos = 0; // 记录写入的位置for (int i = left; i <= right; ++i){if (isSelfDividing(i)){ret[pos++] = i;}}*returnSize = pos;return ret;
}

在这里插入图片描述

总结

解决本题的关键是,如何取出任意整数的每一位。我们需要掌握一种常见的方法,即反复地mod10除10直到num变成0,每次mod10得到的余数就是num的每一位。

感谢大家的阅读!

http://www.lryc.cn/news/103047.html

相关文章:

  • 打卡力扣题目四
  • npm yarn nrm
  • 关于我对刚开始学Java的小白想分享的内容:
  • Redis学习路线(5)—— Redis生成唯一ID
  • django后台系统Tyadmin
  • 设计模式适合用于解决特定的软件设计问题呢
  • 测试|测试分类
  • 矩阵中的路径(JS)
  • Linux时间体系与LinuxPTP
  • 最优除法(力扣)数学 JAVA
  • Git代码管理
  • 使用vscode进行远程开发服务器配置
  • 北斗gps卫星授时服务器(NTP)应用于防火墙场景
  • Quartz中Misfire机制源码级解析
  • 每日一题——重建二叉树
  • Python - json与字典dict
  • 性能测试必备监控技能linux篇
  • 【如何训练一个中英翻译模型】LSTM机器翻译模型部署之ncnn(python)(五)
  • C++ 面向对象三大特征
  • 【Github】自动监测 SSL 证书过期的轻量级监控方案 - Domain Admin
  • Echarts常见图表展示
  • PySpark机器学习实战案例
  • 微软操作系统中,windows server 系列和windows 的区别
  • 本地部署 Stable Diffusion XL 1.0 Gradio Demo WebUI
  • 模型法在初中物理中的实例与应用
  • el-table 设置行背景颜色 鼠标移入高亮问题处理
  • 嵌入式面试常见题目收藏(超总结)
  • error in file(out, “wt“): cannot open the connection
  • Redis (一)消息订阅和发送测试
  • 区间预测 | MATLAB实现QRGRU门控循环单元分位数回归多输入单输出区间预测