正整数的性质:和与根

目录

数字和

数字和介绍

数字和简单应用

哈沙德数

最小元素各数位之和

数字根

数字根介绍

数字根简单应用


数字和

数字和介绍

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Git笔记-配置ssh

Git在Deepin中的ssh配置 一、环境二、安装1. 查看GitHub账户2. 配置 git3. 生成 ssh key 三、配置 一、环境 系统&#xff1a; Deepin v23 Git仓库&#xff1a;GitHub 二、安装 1. 查看GitHub账户 在设置界面看到自己的邮箱&#xff0c;这个邮箱就是后面会用到的邮箱 2. …

在Java中使用XxlCrawler时防止被反爬的几种方式

目录 前言 一、常见的反爬措施 1、User-Agent识别 2、Referer识别 3、频率限制 4、IP限制 二、XxlCrawer的应对之道 1、User-Agent应对 2、频率限制 3、IP限制 三、XxlCrawler执行解析 1、XxlCrawler对象 2、启动对象 3、信息爬取线程 总结 前言 众所周知&#x…

LAMMPS单层石墨烯建模

本文主要介绍两种晶胞建模方式。 一、Z形晶胞 晶胞分析&#xff1a;a1沿水平x轴方向&#xff0c;a2沿垂直y轴方向。石墨烯是二维结构&#xff0c;a3取小于单层石墨烯厚度。假设石墨烯键长L1.421&#xff0c;则a13L&#xff0c;a21.732L&#xff0c;a32L&#xff08;低于3.35即…

IDEA离线安装插件

1、下载地址 https://plugins.jetbrains.com/idea 如果去其他编辑器&#xff0c;点击下拉&#xff0c;选择即可。 2.搜索 在输入框输入关键词&#xff0c;按照提示选择即可&#xff0c;点击搜索按钮&#xff0c;查看结果。 3、选择版本 按照自己的版本选择合适的版本 4、安…

探索比特币符文热:市场趋势与持续性分析

在加密货币世界中&#xff0c;比特币一直是备受关注的焦点之一。然而&#xff0c;近年来&#xff0c;随着DeFi&#xff08;去中心化金融&#xff09;的兴起&#xff0c;一种新的潮流开始崭露头角——比特币符文。本文将探讨比特币符文的兴起&#xff0c;分析市场趋势&#xff0…

FTP与SMB深度对比:文件传输协议谁更胜一筹?

在数字化时代&#xff0c;文件传输已成为日常工作中不可或缺的一部分。 FTP&#xff08;文件传输协议&#xff09;和SMB&#xff08;服务器消息块&#xff09;是两种最为常见的文件传输协议。它们各自在文件传输领域拥有独特的优势和特点&#xff0c;但同时也存在一些差异。 今…

【学习】软件测试自动化,是未来的趋势还是当前的必需

在当今快速迭代的软件开发周期中&#xff0c;速度和质量成为了企业生存的关键。随着DevOps实践的普及和持续集成/持续部署&#xff08;CI/CD&#xff09;流程的标准化&#xff0c;软件测试自动化已经从未来的趋势转变为当前的必要性。本文将探讨自动化测试的现状、必要性以及其…

C基础语法速览

叠甲&#xff1a;以下文章主要是依靠我的实际编码学习中总结出来的经验之谈&#xff0c;求逻辑自洽&#xff0c;不能百分百保证正确&#xff0c;有错误、未定义、不合适的内容请尽情指出&#xff01; 文章目录 1.数据类型1.1.数据类型的常见分类1.2.数据类型的符号修饰1.3.数据…

W801学习笔记十一:掌机进阶V3版本之硬件改造

经由前面的笔记&#xff0c;我们打造出了一款游戏掌机。 W801学习笔记十&#xff1a;HLK-W801制作学习机/NES游戏机(总结) 然而&#xff0c;考虑到后续的游戏开发&#xff0c;总是忧心容量不足。故而&#xff0c;在正式展开软件开发工作以前&#xff0c;最终进行一下升级改造…

百面算法工程师 | 激活函数 Activate Function

目录 10.1激活函数作用&#xff1a; 10.2 为什么激活函数都是非线性的 10.3 常见激活函数的优缺点及其取值范围 10.4 激活函数问题的汇总 10.4.1 Sigmoid的缺点&#xff0c;以及如何解决 10.4.2 ReLU在零点可导吗&#xff0c;如何进行反向传播 10.4.3 Softmax溢出怎么处…

当贝D6X和坚果N1 Air高亮版哪个好?参数对比,教你怎么选

当贝在4月18日的春季新品发布会上推出了首款三色激光投影仪——当贝D6X。这款D6X系列的新品不仅采用了一体式灵动云台&#xff0c;还首创“AI灵动屏”&#xff0c;一经发布就引发热议。那么&#xff0c;当贝D6X的实力究竟如何呢&#xff1f; 我们通过同价位的当贝D6X和坚果N1 A…

Vue+Echarts 实现中国地图和飞线效果

目录 实现效果准备 实现效果 在线预览&#xff1a;https://mouday.github.io/vue-demo/packages/china-map/dist/index.html 准备 高版本的echarts&#xff0c;不包含地图数据&#xff0c;需要自己下载到项目中 1、地图数据下载 https://datav.aliyun.com/portal/school/at…

接口测试和Mock学习路线(中)

1.什么是 swagger Swagger 是一个用于生成、描述和调用 RESTful 接口的 WEB 服务。 通俗的来讲&#xff0c;Swagger 就是将项目中所有想要暴露的接口展现在页面上&#xff0c;并且可以进行接口调用和测试的服务。 现在大部分的项目都使用了 swagger&#xff0c;因为这样后端…

Maven基础篇7

私服-idea访问私服与组件上传 公司团队开发流程 本地上传–>repository–>私服 其他成员从私服拿 1.项目完成后发布到私服 在pom文件最后写上发布的配置管理 ​ //写发布的url也就是你发布到哪一个版本&#xff0c;以及写入id ​ ​ 发布的时候&#xff0c;将项…

开源贡献代码之​探索一下Cython

探索一下Cython 本篇文章将会围绕最近给Apache提的一个feature为背景&#xff0c;展开讲讲Cython遇到的问题&#xff0c;以及尝试自己从0写一个库出来&#xff0c;代码也已经放星球了&#xff0c;感兴趣的同学可以去下载学习。 0.背景 最近在给apache arrow提的一个feature因为…

通配符SSL证书有哪些优点?怎么免费申请?

通配符证书就像一把“万能钥匙”&#xff0c;可以同时给一家公司旗下所有以某个主域名开头的子网站都“上锁”。这样有以下几个好处&#xff1a; 安全放心&#xff1a; - 全副武装&#xff1a;甭管用户访问的是公司的邮箱网站&#xff08;比如mail.公司名.com&#xff09;、购…

【电控笔记5.10】Luenberger估测器

Luenberger估测计 单积分器:pi控制器的补偿 双积分器:使用pid控制器的补偿 除了受控厂跟传感器,其他都在mcu 去掉Rs就是一个PLL锁相环 带宽比PLL更大

WEB服务的配置与使用 Apache HTTPD

服务端&#xff1a;服务器将发送由状态代码和可选的响应正文组成的 响应 。状态代码指示请求是否成功&#xff0c;如果不成功&#xff0c;则指示存在哪种错误情况。这告诉客户端应该如何处理响应。较为流星的web服务器程序有&#xff1a; Apache HTTP Server 、 Nginx 客户端&a…

揭秘npm:高效包管理的绝佳技巧(AI写作)

首先&#xff0c;这篇文章是基于笔尖AI写作进行文章创作的&#xff0c;喜欢的宝子&#xff0c;也可以去体验下&#xff0c;解放双手&#xff0c;上班直接摸鱼~ 按照惯例&#xff0c;先介绍下这款笔尖AI写作&#xff0c;宝子也可以直接下滑跳过看正文~ 笔尖Ai写作&#xff1a;…

整合阿里云OSS 对象存储

1. 创建Bucket 填写属性参数 2. 获取秘钥accessKey 2.1 进入accessKey管理页面 2.2 创建accessKey&#xff0c;并获取信息 需要自行进行安全验证 记录自己的 信息 3. 查看官方SDK文档 位置 找到开发参考Java 4. 具体实现-参考官网 4.1 添加依赖 <dependency&…