2024-11-16:哈沙德数。用go语言,如果一个整数能够被它的各个数位上数字的和整除, 我们称这个整数为哈沙德数(Harshad number)。 给定一个整数 x, 如果 x 是哈沙德数,则返回
2024-11-16:哈沙德数。用go语言,如果一个整数能够被它的各个数位上数字的和整除,
我们称这个整数为哈沙德数(Harshad number)。
给定一个整数 x,
如果 x 是哈沙德数,则返回 x 各个数位的数字和;
如果不是,则返回 -1。
输入: x = 18。
输出: 9。
解释:
x 各个数位上的数字之和为 9 。18 能被 9 整除。因此 18 是哈沙德数,答案是 9 。
答案2024-11-16:
题目来自leetcode3099。
大体步骤如下:
1.函数定义:
- 定义了一个函数
sumOfTheDigitsOfHarshadNumber,接受一个整数x作为参数,目的在于计算该数字的各个数位的和并判断是否为哈沙德数。
2.初始化总和:
在函数内部,初始化一个变量
s为 0 用于保存数字各位的和。另外,将输入的
x赋给循环变量y,后续的操作将会用y而不是直接修改x。
3.计算各位数字和:
3.1.使用一个 for 循环,循环条件是 y 不等于 0。
3.2.在每次循环中:
3.2.1.使用 y % 10 获取 y 的最后一位数字,并将其加到 s 上。
3.2.2.然后通过 y /= 10 将 y 除以 10,以去掉最后一位数字。
3.3.循环结束时,变量 s 中存储的即为 x 各位数字的和。
4.判断是否为哈沙德数:
在计算完数字和
s之后,检查x是否能被s整除(x % s)。如果不能整除,函数返回 -1,表示x不是哈沙德数。如果能整除,则返回
s,表示x是哈沙德数,我们返回各个数字的和。
5.主函数:
在
main函数中,定义一个整数x(在此例中为 18)。调用
sumOfTheDigitsOfHarshadNumber(x)函数,并打印其返回值。
时间复杂度
计算数字和的步骤涉及到对
x的每一位进行一次访问。假设x的位数为d,则时间复杂度为 O(d)。在十进制中,位数与数字大小的对数成正比(
d = log10(x)),因此可以认为时间复杂度是 O(log x)。
空间复杂度
函数中使用了几个整数变量(
s和y),这些变量的空间占用是常数级别的。因此,空间复杂度为 O(1),即常数级空间复杂度。
总结
时间复杂度:O(log x)
空间复杂度:O(1)
Go完整代码如下:
package main
import (
"fmt"
)
func sumOfTheDigitsOfHarshadNumber(x int) int {
s := 0
for y := x; y != 0; y /= 10 {
s += y % 10
}
if x%s != 0 {
return -1
}
return s
}
func main() {
x := 18
fmt.Println(sumOfTheDigitsOfHarshadNumber(x))
}

Rust完整代码如下:
fn sum_of_the_digits_of_harshad_number(x: i32) -> i32 {
let mut s = 0;
let mut y = x;
while y != 0 {
s += y % 10;
y /= 10;
}
if x % s != 0 {
return -1;
}
s
}
fn main() {
let x = 18;
println!("{}", sum_of_the_digits_of_harshad_number(x));
}

2024-11-16:哈沙德数。用go语言,如果一个整数能够被它的各个数位上数字的和整除, 我们称这个整数为哈沙德数(Harshad number)。 给定一个整数 x, 如果 x 是哈沙德数,则返回的更多相关文章
- 给定一个整数N,找出一个比N大且最接近N,但二进制权值与该整数相同 的数
1,问题描述 给定一个整数N,该整数的二进制权值定义如下:将该整数N转化成二进制表示法,其中 1 的个数即为它的二进制权值. 比如:十进制数1717 的二进制表示为:0000 0110 1011 01 ...
- 课堂练习:给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数。
题目 1 给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数. 2 要求: (1) 写一个函数 f(N) ,返回1 到 N 之间出现的“1”的个数.例如 f(12) ...
- python 实现整数的反转:给定一个整数,将该数按位逆置,例如给定12345变成54321,12320变成2321.
给定一个n位(不超过10)的整数,将该数按位逆置,例如给定12345变成54321,12320变成2321. # 第一种方法,使用lstrip函数去反转后,数字前面的0 import math num ...
- 给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数。
一.题目: n给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数. n要求: n写一个函数 f(N) ,返回1 到 N 之间出现的 “1”的个数.例如 f(12) ...
- 给定一个十进制数,将其转化为N进制数-----17年滴滴笔试题
题目:给定一个十进制数M,将其转化为N进制数,其中2<=N<=16,其中N为32为整型数; 输入:M N,如7 2 输出转化结果:111 注意点:考虑负数的情况,记得添加负号(其实直接添加 ...
- 刷题3:给定一个数组 nums,判断 nums 中是否存在三个下标 a,b,c数相加等于targe且a,b,c不相等
题目: 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,下标 ,a ,b , c 对应数相加等于 targe 找出所有满足条件且不重复的三元组下标 解析: ...
- 给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度为O(N),且要求不能用非基于比较的排序
题目: 给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度为O(N),且要求不能用非基于比较的排序 public static int maxGap(int nums[]) { if ( ...
- [LeetCode136]Single Number寻找一个数组里只出现一次的数
题目: Given an array of integers, every element appears twice except for one. Find that single one. No ...
- 9.11排序与查找(三)——给定一个排序后的数组,包括n个整数,但这个数组已被旋转过多次,找出数组中的某个元素
/** * 功能:给定一个排序后的数组.包括n个整数.但这个数组已被旋转过多次,次数不详.找出数组中的某个元素. * 能够假定数组元素原先是按从小到大的顺序排列的. */ /** * 思路:数组 ...
- 算法战斗:给定一个号码与通配符问号W,问号代表一个随机数字。 给定的整数,得到X,和W它具有相同的长度。 问:多少整数协议W的形式和的比率X大?
如果说: 给定一个号码与通配符问号W,问号代表一个随机数字. 给定的整数,得到X,和W它具有相同的长度. 问:多少整数协议W的形式和的比率X大? 进格公式 数据的多组,两排各数据的,W,第二行是X.它 ...
随机推荐
- Java并发之原子变量及CAS算法-下篇
Java并发之原子变量及CAS算法-下篇 概述 本文主要讲在Java并发编程的时候,如果保证变量的原子性,在JDK提供的类中是怎么保证变量原子性的呢?.对应Java中的包是:java.util.con ...
- git重命名文件夹
在源代码文件夹中打开git bash, 不同名称的文件夹命令: 1. git mv A An 3. git add -u An 4. git commit -m "重命名A为An&quo ...
- 【YashanDB知识库】outline固化执行计划
[问题分类]性能优化,功能使用 [关键字]outline [问题描述]防止SQL执行计划突变,用outline固化执行计划 [问题原因分析]防止SQL执行计划突变,用outline固化执行计划 [解决 ...
- 安装Kubernetes(k8s)保姆级教程---无坑版
一.安装环境说明 硬件要求 内存:2GB或更多RAM CPU: 2核CPU或更多CPU 硬盘: 30GB或更多 本次环境说明: 操作系统:CentOS 7.9 内核版本:3.10.0-1160 mas ...
- 知识增强深度学习及其应用:综述《Knowledge-augmented Deep Learning and Its Applications: A Survey》(下)
论文:Knowledge-augmented Deep Learning and Its Applications: A Survey GitHub: arXiv上的论文. (接着来) 4 用经验知识 ...
- ASP.NET Core – Web API 冷知识
Under/Over Posting 参考: .NET Core WebApi Action is executed even with missing properties in the reque ...
- “RazorTagHelper”任务意外失败。解决方案
严重性 代码 说明 项目 文件 行 禁止显示状态错误 MSB4018 "RazorTagHelper"任务意外失败.System.I ...
- C++11 线程同步接口std::condition_variable和std::future的简单使用
std::condition_variable 条件变量std::condition_variable有wait和notify接口用于线程间的同步.如下图所示,Thread 2阻塞在wait接口,Th ...
- LeetCode 407. 接雨水 II (优先队列)
参考 优先队列的思路解决接雨水II,逐行解释 从最外圈开始不断向内遍历,如果内部的高度小于外部的高度,则证明该位置可以蓄水,否则不能,水会顺着该外圈流出去. 每次都处理外圈高度最小的那个位置 a,遍历 ...
- 论文解读《MASTERKEY: Automated Jailbreaking of Large Language Model Chatbots》
导言 在参加东南大学网络安全学院夏令营的契机下,我第一次接触大模型安全领域.L老师是网络安全领域的一位大牛,在和L老师交流期间,被告知需要准备一次paper presentation介绍四大会中感 ...