正整数的性质:和与根

news2024/11/16 18:03:40

目录

数字和

数字和介绍

数字和简单应用

哈沙德数

最小元素各数位之和

数字根

数字根介绍

数字根简单应用


数字和

数字和介绍

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

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://www.coloradmin.cn/o/1620096.html

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

相关文章

干货|交流非线性RCD负载的重要指标

在电力系统中&#xff0c;非线性负载是一个重要的问题。它们会对电力系统的稳定性和电能质量产生重大影响。因此&#xff0c;对非线性负载的研究和管理具有重要的实际意义。在交流非线性RCD&#xff08;Residual Current Device&#xff09;负载中&#xff0c;有几个重要的指标…

挤浆机液压系统比例阀放大器

挤浆机液压系统比例阀放大器是一种在制浆工程中用于洗涤浆料的设备&#xff0c;它通过机械压榨的方式&#xff0c;从纸浆中提取出黑液&#xff08;即造纸过程中产生的废液&#xff09;。主液压系统其主要功能是驱动挤浆机的两个辊子转动。这两个辊子负责将浆料中的水分挤出&…

Unity的旋转实现一些方法总结(案例:通过输入,玩家进行旋转移动)

目录 1. Transform.Rotate 方法 使用 2. Transform.rotation 或 Transform.localRotation 属性与四元数 使用方式&#xff1a; 小案例 &#xff1a;目标旋转角度计算&#xff1a;targetRotation&#xff08;Quaternion类型&#xff09; 玩家发现敌人位置&#xff0c;玩家…

SWCTF

easy_php 源码 <?php// flag is in flag.php highlight_file(__FILE__); ini_set(display_errors, 0); error_reporting(0);if (isset($_GET[myon1]) && isset($_GET[myon2]) && isset($_GET[myon3])) {$myon1 $_GET[myon1];$myon2 $_GET[myon2];$myon…

揭秘内网渗透:命令大全助你轻松测试安全【内网渗透命令大全】

网络安全最新课程大纲 感兴趣可留言 1.域常用操作命令&#xff1a; net group /domain //获得所有域用户组列表 net group qq_group /domain //显示域中qq_group组的成员 net group qq_group /del /domain //删除域中qq_group组 net group qq_group qq /del /domain …

2024创业项目新方向,智享无人实景直播配合智能贴图数字人,让直播更简单,帮助商家快速引流客户到店,帮助创业者轻松实现梦想!

随着科技的迅猛发展&#xff0c;直播行业也经历了一次又一次的变革和创新。在2024年&#xff0c;AI实景无人直播成为了这个领域的全新宠儿&#xff0c;为商家和观众带来了前所未有的智能、高效体验。这种革命性的直播方式不仅降低了运营成本&#xff0c;还极大地提升了直播的效…

Aigtek功率放大器的工作特点有哪些方面

功率放大器是电子设备中常见的元器件&#xff0c;用于将输入信号的功率增加到所需的输出功率水平。它在各种应用中发挥着重要作用&#xff0c;如音频放大、射频信号处理、通信系统等。功率放大器具有以下几个工作特点&#xff1a; 放大功能&#xff1a;功率放大器主要的工作特点…

怎样快速插入数据

1、30万条数据插入插入数据库验证 1.1、表结构&#xff1a; CREATE TABLE t_user (id int(11) NOT NULL AUTO_INCREMENT COMMENT 用户id,username varchar(64) DEFAULT NULL COMMENT 用户名称,age int(4) DEFAULT NULL COMMENT 年龄,PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT…

Python自学篇2-导入Win32库

Python导入win32模块 导入win32模块可以让我们在Python中使用Windows的API功能&#xff0c;这对于开发需要与Windows操作系统进行交互的应用程序非常有用。 本文将介绍如何导入win32模块&#xff0c;并提供一些代码示例来帮助读者更好地理解。 什么是win32模块&#xff1f; …

【Stable Diffusion系列】(一):AI绘画本地部署教程

目录 一、总览 二、本地部署 1、安装cuda 2、安装python 3、安装git 4、方法一 1&#xff09;获取安装包 2&#xff09;update 3&#xff09;run 5、方法二 1&#xff09;git clone 2&#xff09;双击webui-user.bat 3&#xff09;更新 6、设置启动参数 7、…

LiveNVR监控流媒体Onvif/RTSP常见问题-如何对比监控摄像头延时视频流延时支持webrtc视频流播放超低延时播放

LiveNVR如何对比监控摄像头延时视频流延时支持webrtc视频流播放超低延时播放 1、问题场景2、如何对比延时&#xff1f;3、WEBRTC延时对比4、LiveNVR支持WEBRTC输出5、RTSP/HLS/FLV/RTMP拉流Onvif流媒体服务 1、问题场景 需要低延时的视频流监控播放&#xff0c;之前可以用rtmp…

pytorch-MNIST测试实战

目录 1. 为什么test2. 如何做test3. 什么时候做test4. 完整代码 1. 为什么test 如下图&#xff1a;上下两幅图中蓝色分别表示train的accuracy和loss&#xff0c;黄色表示test的accuracy和loss&#xff0c;如果单纯看train的accuracy和loss曲线就会认为模型已经train的很好了&a…

C++初识--------带你从不同的角度理解引用的巧妙之处

1.对于展开的理解 我们这里的展开包括命名空间的展开和头文件的展开&#xff0c;两者的含义是不一样的&#xff1a; 头文件的展开就是把头文件拷贝到当前的文件里面&#xff1b; 命名空间的展开不是拷贝&#xff0c;而是因为编译器本身默认是到全局里面去找&#xff0c;当我…

【热议】硕士和读博士洗碗区别的两大理论

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验&#xff0c;帮助大家尽早适应研究生生活&#xff0c;尽快了解科研的本质。祝一切顺利&#xff01;—…

SWOT分析法:知彼知己的战略规划工具

文章目录 一、什么是SWOT分析法二、SWOT分析法如何产生的三、SWOT分析法适合哪些人四、SWOT分析法的应用场景五、SWOT分析法的优缺点六、SWOT分析实例 一、什么是SWOT分析法 SWOT分析法是一种用于评估组织、项目、个人或任何其他事物的战略规划工具。SWOT是Strengths&#xff…

组态风格的工业可视化大屏,既同步状态又掌控数据,一箭双雕。

可视化大屏中加入了组态图&#xff0c;状态和数据一目了然了&#xff0c;我看还有谁说可视化大屏没啥用啦。 将组态图放入可视化大屏中可以起到以下几个作用&#xff1a; 1. 实时监控&#xff1a; 组态图可以用来实时监控设备、系统或者生产线的运行状态。通过大屏展示&#…

HackMyVM-Alzheimer

目录 信息收集 arp nmap FTP服务信息收集 匿名登陆 关键信息 knock WEB信息收集 信息收集 gobuster 目录爆破 ssh登录 提权 系统信息收集 提权 get root 信息收集 arp ┌──(root㉿0x00)-[~/HackMyVM] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC…

应用于智能装备制造,钡铼IOy系列模块展现其强大的灵活性和实用性

随着科技的飞速发展&#xff0c;智能制造已经成为工业4.0时代的核心驱动力。在此背景下&#xff0c;钡铼技术推出的IOy系列模块以其独特的设计、卓越的性能以及无可比拟的灵活性与实用性&#xff0c;在智能装备制造领域展现出了强大的技术优势和应用价值。 首先&#xff0c;钡…

Excel 冻结前几行

Excel中有冻结首航和冻结首列的选项&#xff0c;但是如果想冻结前几行该怎么操作&#xff1f; 冻结首行或冻结首列 视图 -> 冻结窗格 -> 冻结首行或冻结首列 冻结前几行或前几列 视图 -> 冻结窗格 -> 冻结拆分窗格 具体冻结几行和几列取决于当前选中的单元格。…

力扣HOT100 - 114. 二叉树展开为链表

解题思路&#xff1a; class Solution {List<TreeNode> list new ArrayList<>();public void flatten(TreeNode root) {recur(root);for (int i 1; i < list.size(); i) {TreeNode pre list.get(i - 1);TreeNode cur list.get(i);pre.left null;pre.right…