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.它 ...
随机推荐
- 【工程应用十一】基于PatchMatch算法的图像修复研究(inpaint)。
这个东西是个非常古老的算法了,大概是2008年的东西,参考资料也有很多,不过基本上都是重复的.最近受一个朋友的需求,前后大概用了二十多天时间去研究,也有所成果,在这里简单的予以记录. 图像修 ...
- Instant exceeds minimum or maximum instant
使用 Instant.now().plusSeconds("xxxxx")报错 Instant exceeds minimum or maximum instant原因是取值范围 ...
- 用描述程序的方式emo,扎心了...
用描述程序的方式emo,扎心了... 众所周知写程序是个枯燥无聊的过程,再加上生活的不顺与坎坷,当程序语言与emo结合起来,看谁还说程序员不懂感情! 首当其冲的就是循环语句了 世界上最寂寞的感觉,是我 ...
- 【YashanDB知识库】outline固化执行计划
[问题分类]性能优化,功能使用 [关键字]outline [问题描述]防止SQL执行计划突变,用outline固化执行计划 [问题原因分析]防止SQL执行计划突变,用outline固化执行计划 [解决 ...
- Chrome 浏览器插件获取网页 window 对象(方案三)
前言 最近有个需求,是在浏览器插件中获取 window 对象下的某个数据,当时觉得很简单,和 document 一样,直接通过嵌入 content_scripts 直接获取,然后使用 sendMess ...
- Facebook Ads – 笔记
前言 记入一些小东西 参考 YouTube – 这是第一次广告投放回报做到11倍!Facebook广告高广告投资回报2023年终极策略密码分享 价值阶梯 先卖便宜 value 低的东西给客户,甚至免费 ...
- Identity – 安全基础知识
前言 一旦涉及到用户, 那么安全就上一个层次了. 这篇主要是说说一些安全的基础 用户密码保存 网络上有太多资料说这些基础了, 我就不拉过来了. 大致记入一些重点就好了. - 为什么不可以明文保存 因为 ...
- face-api.js 学习笔记
参考 Build Real Time Face Detection With JavaScript (youtube get started) face-api.js - JavaScript API ...
- C#|.net core 基础 - 扩展数组添加删除性能最好的方法
今天在编码的时候遇到了一个问题,需要对数组变量添加新元素和删除元素,因为数组是固定大小的,因此对新增和删除并不友好,但有时候又会用到,因此想针对数组封装两个扩展方法:新增元素与删除元素,并能到达以下三 ...
- 阿里云Tomcat7配置域名详解
一. 进入阿里云服务控制台,点击SSL证书 看到下载了么,对应着你的域名点击下载服务器类型选择Tomcat,点击下载,压缩包中包含 xxxxx__test.com.pfx, pfx-password. ...