正整数的性质:和与根

目录

数字和

数字和介绍

数字和简单应用

哈沙德数

最小元素各数位之和

数字根

数字根介绍

数字根简单应用


数字和

数字和介绍

简单来说,数字和即一个整数数字每一位数值相加求和所得的值,数字和可以为任意正整数,使用代码获取一个数值的数字和模版如下:

while (num)
{sum += num % 10;// 记录各位之和num /= 10; // 获取下一个高位数值
}

数字和简单应用

哈沙德数

题目链接:3099. 哈沙德数 - 力扣(LeetCode)

如果一个整数能够被其各个数位上的数字之和整除,则称之为 哈沙德数(Harshad number)。给你一个整数 x 。如果 x哈沙德数 ,则返回 x 各个数位上的数字之和,否则,返回 -1

思路解析:

题目要求获取哈沙德数,根据题目描述,所谓哈沙德数即为当前数值可以被其数字和整除,所以直接使用数字和模版先获取数字和,再判断是否可以整除从而判断x是否为哈沙德数

参考代码:

/** @lc app=leetcode.cn id=3099 lang=cpp** [3099] 哈沙德数*/// @lc code=start
class Solution
{
public:int sumOfTheDigitsOfHarshadNumber(int x){// 求各位之和int sum = 0;int tmp = x;while (tmp){sum += tmp % 10;tmp /= 10;}if (x % sum == 0){return sum;}return -1;}
};
// @lc code=end

最小元素各数位之和

题目链接:1085. 最小元素各数位之和 - 力扣(LeetCode)

给你一个正整数的数组 A
然后计算 S,使其等于数组 A 当中最小的那个元素各个数位上数字之和。
最后,假如 S 所得计算结果是 奇数 ,返回 0 ;否则请返回 1。

思路解析:

本题只需要先获取数组中最小的数值,再求该数值的数字和即可

参考代码:

/** @lc app=leetcode.cn id=1085 lang=c** [965] 最小元素各数位之和*/// @lc code=start
class Solution {
public:int sumOfDigits(vector<int>& nums) {int ret = *min_element(nums.begin(), nums.end());int ans = 0;while (ret){ans += ret % 10;ret /= 10;}if(ans % 2){return 0;}return 1;}
};
// @lc code=end

数字根

数字根介绍

相比较于数字和来说,数字根是数值的每一位相加求和直到和结果为1位数,例如6278的数字根计算方式为6+2+7+8=23->2+3=5,所以6278的数字根为5

求一个数值的数字根有两种方法

  1. 循环求和
while (tmp > 9)
{// 获取最低位和while (tmp){sum += tmp % 10;tmp /= 10;}tmp = sum;sum = 0;
}
sum = tmp;
  1. 数学计算(去9法)

观察到因为数字根最大不会超过9,而对于十进制数值来说,例如6278,可以转化为6000+200+70+8,即6*1000+2*100+7*10+8*1

此时将上式转化为6*(999+1)+2*(99+1)+7*(9+1)+8,化简可得6*999+2*99+7*9+6+2+7+8,可以看到最后的6,2,7和8即为6278的每一位数值,而对于6+2+7+8=23来说可以划分为2*10+3*1,转化为2*(9+1)+3=2*9+2+3,可以看到最后的2和3即为23的每一位数值

现在将范围扩大到所有十进制以内整数num,对于num来说,用i代表最低位位权值0,n-1代表最高位位权值,则上面等式可以写为通式:

\sum_{i=0}^{n-1}{​{​{a}_{i}}\times 1{​{0}^{i}}}

转化为

\sum_{i=0}^{n-1}{​{​{a}_{i}}\times (1{​{0}^{i}}-1+1)}=\sum_{i=0}^{n-1}{​{​{a}_{i}}\times 1{​{0}^{i}}-1}+\sum_{i=0}^{n-1}{​{​{a}_{i}}}

此时算式中的\sum_{i=0}^{n-1}{​{​{a}_{i}}}即为每一次求和的数字和,多次求和直到和小于10,则和即为该数的数字根

而因为i为0时,10^i-1是9的倍数,i为1时,10^i-1依旧是9的倍数。而去掉的每一部分,例如上面的6278中的6,2,7和8之和取9的余数此时和原数6278取9的余数相同(也称模9同余),有下面的结果:6278/9=698…5 ,所以6278%9=5\equiv23 % 9 = 5,此时5即6278的数字根

但是如果该数值为9的倍数,那么余数为0,但是数字根不为0,所以此时需要改变计算方法

例如对于数值18来说,18%9=0,1+8=9,此时数字根并不等于余数,但是17%9=8,而17比18只少一个最低位,所以可以采取(18-1)%9+1=9,此时数字根等于余数

对于其余正常数值来说,也并不影响余数即为数字根,因为改变的都只是最低位的数值,而最低位数值都是1的倍数,所以相当于缺一个1补一个1

所以数字根,可以理解为数字相对于数值9来说的余数

综上所述,可以将代码简化为

(num-1)%9+1

数字根简单应用

题目链接:258. 各位相加 - 力扣(LeetCode)

给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。

思路解析:

数字根基本计算

参考代码:

/** @lc app=leetcode.cn id=258 lang=cpp** [258] 各位相加*/// @lc code=start
class Solution
{
public:int addDigits(int num){return (num - 1) % 9 + 1;}
};
// @lc code=end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2982196.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

zabbix6.4告警配置(短信告警和邮件告警),脚本触发

目录 一、前提二、告警配置1.邮件告警脚本配置2.短信告警脚本配置3.zabbix添加报警媒介4.zabbix创建动作4.给用户添加报警媒介 一、前提 已经搭建好zabbix-server 在需要监控的mysql服务器上安装zabbix-agent2 上述安装步骤参考我的上篇文章&#xff1a;通过docker容器安装za…

41. UE5 RPG 设置火球术的碰撞类型

在上一篇中&#xff0c;我们设置了火球术从发射到击中敌人的整个周期使用的音效和特效&#xff0c;现在看上去它像一个真正的火球术了。在这一篇文章里面&#xff0c;我们主要解决一下火球术碰撞的问题&#xff0c;现在已知的问题是&#xff0c;有些不需要和火球产生碰撞的物体…

Linux系统-服务器硬件及RAID配置

目录 一.服务器 1.服务器与普通计算机的区别 2.功能 3.分类&#xff08;按照产品形态分&#xff09; 4.架构&#xff08;按照指令集类型&#xff09; 5.相关指令 5.1.查看服务器CPU的信息 5.2.查看服务器内存的信息 二.RAID磁盘阵列&#xff08;Redundant Array …

免费SSL证书和付费SSL证书区别在哪

免费SSL证书与付费SSL证书在多个方面存在差异&#xff0c;这些差异主要体现在认证级别、保障金额以及服务范围上。在以下几个方面存在显著区别&#xff1a; 1、验证类型和信任级别&#xff1a; 免费SSL证书&#xff1a;通常只提供域名验证&#xff08;DV&#xff09;级别的证…

金融圈卷到挤不进?那是因为你不是中国人民大学与加拿大女王大学金融硕士

金融圈是一个高度竞争的行业&#xff0c;对于求职者的学历、能力、经验和资源有着较高的要求。由此金融人们会常说金融圈已经卷到挤不进去的程度。在这个行业中&#xff0c;就像双非&#xff08;非985/211高校毕业&#xff0c;非金融相关专业毕业&#xff09;的学生就往往面临着…

【面试经典 150 | 数组】Z 字形变换

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;二维矩阵模拟方法二&#xff1a;一次遍历 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于…

C++中的五种高级初始化技术:从reserve到piecewise_construct等

C高级初始化技术&#xff1a;reserve、emplace_back、constinit、Lambda表达式、piecewise_construct 一、简介二、reserve 结合 emplace_back三、C 20的constinit四、Lambda表达式和初始化五、make_unique_for_overwrite六、piecewise_construct 和 forward_as_tuple七、总结 …

物联网的基本功能及五大核心技术——青创智通

工业物联网解决方案-工业IOT-青创智通 物联网基本功能 物联网的最基本功能特征是提供“无处不在的连接和在线服务”&#xff0c;其具备十大基本功能。 &#xff08;1&#xff09;在线监测&#xff1a;这是物联网最基本的功能&#xff0c;物联网业务一般以集中监测为主、控制为…

Golang | Leetcode Golang题解之第42题接雨水

题目&#xff1a; 题解: func trap(height []int) (ans int) {n : len(height)if n 0 {return}leftMax : make([]int, n)leftMax[0] height[0]for i : 1; i < n; i {leftMax[i] max(leftMax[i-1], height[i])}rightMax : make([]int, n)rightMax[n-1] height[n-1]for i…

Esp32s3固件烧写

芯片图片 烧写完成之后来一段代码,点亮自带的WS2182灯珠 from machine import Pin import neopixel,time# 输出的引脚定义。 pin = Pin(48,Pin.OUT) # 我这块板子上的板载RGB是48脚。可以查看原理图或者直接找个ws2812B灯珠接上正负极和自己定义一个引脚。# 灯珠控制 Int…

安装 Nginx 的三种方式

通过 Nginx 源码安装需要提前准备的内容&#xff1a; GCC 编译器 Nginx 是使用 C 语言编写的程序&#xff0c;因此想要运行 Nginx 就需要安装一个编译工具 GCC 就是一个开源的编译器集合&#xff0c;用于处理各种各样的语言&#xff0c;其中就包含了 C 语言 使用命令 yum i…

电力调度自动化系统由什么构成?

电力调度自动化系统由什么构成&#xff1f; 电力调度自动化系统通过数据采集与传输、数据处理与存储、监视与控制、优化与决策、通信网络和系统应用软件等构成&#xff0c;实现对电力系统的监控、控制和优化。 电力调度自动化系统是一种集成了计算机技术、通信技术、自动化技术…

上位机图像处理和嵌入式模块部署(树莓派4b开机启动脚本)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 编写好程序之后&#xff0c;一般要求程序开机启动后就可以运行。所以这个时候&#xff0c;我们一般就会把程序流程放在开发板的启动脚本当中。如果…

Ubuntu系统开机长

Ubuntu系统开机长 1. 检查开机自启动软件的所占时间2. 将耗时最高的禁止开机自启动 1. 检查开机自启动软件的所占时间 systemd-analyze blame2. 将耗时最高的禁止开机自启动 sudo systemctl disable networking.service这个耗时是有阈值的&#xff0c;一般大于15s的算&#x…

k8s-pod 控制器

文章目录 k8s-pod 控制器无状态服务与有状态服务无状态服务pod 控制器ReplicationController(RC)ReplicaSet(RS)Label 和 Selector Deployment创建滚动更新回滚版本扩容/缩容暂停和恢复 StatefulSet创建扩容/缩容更新RollingUpdate->金丝雀发布OnDelete 删除 DaemonSet节点选…

JumpServer 堡垒机架构

需求背景&#xff1a; 最近由于项目审计需要&#xff0c;要求企业加固应用和系统&#xff0c;顺便加固一些日常使用的软件和系统&#xff0c;远程接入访问安全问题。 需求目的&#xff1a; 部署实施&#xff1a; 1、系统安装 安装执行 curl -sSL https://resource.fit2clou…

Spring 注解开发详解

1. 注解驱动入门案例介绍 1.1 需求描述 1.需求&#xff1a;实现保存一条数据到数据库。 2.表结构&#xff1a;create table account(id int primary key auto_increment,name varchar(50),money double(7,2)); 3.要求&#xff1a;使用spring框架中的JdbcTemplate和DriverMana…

问题记录:交换两行printf -打印结果不同

环境 os: windows IDE: iar toolchain&#xff1a;iar9.32 board: STM32F429 问题描述 同一个float变量&#xff0c;用两行printf打印&#xff0c;先%d打出来&#xff0c;再%.3f打出来&#xff0c;前者输出32&#xff08;正确&#xff09;&#xff0c;后者打出来是0.000。顺…

贝叶斯网络(概念、应用、实例)

目录 一、贝叶斯网络基本概念 1.1主要组成 1.2概率模型 1.3应用场景 1.4推理方法 1.5学习 二、贝叶斯网络在机器学习中的应用 三、应用实例 3.1分类 3.2推荐系统 3.3自然语言处理 一、贝叶斯网络基本概念 贝叶斯网络&#xff0c;也称为信念网络或有向无环图模型&am…

微信小程序开发六(自定义组件)

自定义组件的创建&#xff1a; 如何创建&#xff1a; 右键选择新建component 创建完成之后需要打开app.json&#xff0c;这是全局使用这个组件&#xff0c;想要单独的页面使用&#xff0c;就在当前页面的json文件中定义 "usingComponents": {"my-zj": &quo…