2024-11-16:哈沙德数。用go语言,如果一个整数能够被它的各个数位上数字的和整除,

我们称这个整数为哈沙德数(Harshad number)。

给定一个整数 x,

如果 x 是哈沙德数,则返回 x 各个数位的数字和;

如果不是,则返回 -1。

输入: x = 18。

输出: 9。

解释:

x 各个数位上的数字之和为 9 。18 能被 9 整除。因此 18 是哈沙德数,答案是 9 。

答案2024-11-16:

chatgpt

题目来自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 /= 10y 除以 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)。

空间复杂度

  • 函数中使用了几个整数变量(sy),这些变量的空间占用是常数级别的。

  • 因此,空间复杂度为 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 是哈沙德数,则返回的更多相关文章

  1. 给定一个整数N,找出一个比N大且最接近N,但二进制权值与该整数相同 的数

    1,问题描述 给定一个整数N,该整数的二进制权值定义如下:将该整数N转化成二进制表示法,其中 1 的个数即为它的二进制权值. 比如:十进制数1717 的二进制表示为:0000 0110 1011 01 ...

  2. 课堂练习:给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数。

    题目 1 给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数. 2 要求: (1) 写一个函数 f(N) ,返回1 到 N 之间出现的“1”的个数.例如 f(12)  ...

  3. python 实现整数的反转:给定一个整数,将该数按位逆置,例如给定12345变成54321,12320变成2321.

    给定一个n位(不超过10)的整数,将该数按位逆置,例如给定12345变成54321,12320变成2321. # 第一种方法,使用lstrip函数去反转后,数字前面的0 import math num ...

  4. 给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数。

    一.题目: n给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数. n要求: n写一个函数 f(N) ,返回1 到 N 之间出现的 “1”的个数.例如 f(12)  ...

  5. 给定一个十进制数,将其转化为N进制数-----17年滴滴笔试题

    题目:给定一个十进制数M,将其转化为N进制数,其中2<=N<=16,其中N为32为整型数; 输入:M N,如7 2 输出转化结果:111 注意点:考虑负数的情况,记得添加负号(其实直接添加 ...

  6. 刷题3:给定一个数组 nums,判断 nums 中是否存在三个下标 a,b,c数相加等于targe且a,b,c不相等

    题目: 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,下标 ,a ,b , c 对应数相加等于 targe 找出所有满足条件且不重复的三元组下标 解析: ...

  7. 给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度为O(N),且要求不能用非基于比较的排序

    题目: 给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度为O(N),且要求不能用非基于比较的排序 public static int maxGap(int nums[]) { if ( ...

  8. [LeetCode136]Single Number寻找一个数组里只出现一次的数

    题目: Given an array of integers, every element appears twice except for one. Find that single one. No ...

  9. 9.11排序与查找(三)——给定一个排序后的数组,包括n个整数,但这个数组已被旋转过多次,找出数组中的某个元素

    /**  * 功能:给定一个排序后的数组.包括n个整数.但这个数组已被旋转过多次,次数不详.找出数组中的某个元素.  * 能够假定数组元素原先是按从小到大的顺序排列的.  */ /** * 思路:数组 ...

  10. 算法战斗:给定一个号码与通配符问号W,问号代表一个随机数字。 给定的整数,得到X,和W它具有相同的长度。 问:多少整数协议W的形式和的比率X大?

    如果说: 给定一个号码与通配符问号W,问号代表一个随机数字. 给定的整数,得到X,和W它具有相同的长度. 问:多少整数协议W的形式和的比率X大? 进格公式 数据的多组,两排各数据的,W,第二行是X.它 ...

随机推荐

  1. 使用FModel提取黑神话悟空的资产

    目录 前言 设置 效果展示 闲聊 可能遇到的问题 没有相应的UE引擎版本选项 前言 黑神话悟空昨天上线了,解个包looklook. 本文内容比较简洁,仅介绍解包黑神话所需的专项配置,关于FModel的 ...

  2. OpenTelemetry 实战:从零实现应用指标监控

    前言 在上一篇文章:OpenTelemetry 实战:从零实现分布式链路追踪讲解了链路相关的实战,本次我们继续跟进如何使用 OpenTelemetry 集成 metrics 监控. 建议对指标监控不太 ...

  3. Windows 新建用户帐户

    Windows 近年来大力推广使用 Microsoft 帐户登录 Windows.然而,如果你这么做了,Windows 会取你登录帐户的前 5 个字母作为你的本地用户名,非常的丑陋.更难受的是本地用户 ...

  4. python png 转 icon文件

    pip install pillow from PIL import Image def png_to_ico(png_path, ico_path): img = Image.open(png_pa ...

  5. 总结:redis 突然变慢

    用户量暴增,无法下单,凌晨的夜,静悄悄... 经过查找发现Redis. 获取不到连接资源,并且集群中的单台 Redis 连接量很高. 大量的流量没了 Redis 的缓存响应,直接打到了 MySQL,最 ...

  6. Round #2022/11/26

    问题 B:染色 题目描述 有长度为 \(n\) 的一个序列,编号为 \(1\) 到 \(n\) ,现要对这些元素进行染色标记,若编号 \(i-j\) 为素数,且 \(1\le i < j \le ...

  7. Flutter 不容错过的 7 大亮点 | Google I/O 精彩回顾

    Flutter 在今年的 Google I/O 上发布了许多重磅更新,欢迎大家和我们一起了解其中不容错过的 7 大亮点, 点击这里 观看 Flutter 不容错过的 7 大亮点 视频了解更多信息. F ...

  8. 基于AIOps实现智慧园区极简IT运维

    随着物联网.云平台.大数据.人工智能等技术的发展,并逐步投入到智慧园区的建设,传统园区数字化转型加快.园区的形式包括产业园区.教育园区.制造业园区.科研园区.社区等等,园区形态不断演进和发展,园区网承 ...

  9. 【Wing】背后的插件们

    wing 作为我们日常开发的命令行开发工具,项目开源以来,陆陆续续接入了多个插件,在这里集中分享给大家. ☞ Github ☜ ☞ Gitee ☜ 01. wing -screen 作为Android ...

  10. mysql-存储过程(二)-逻辑判断语句

    一,if语句: IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为e ...