3099. 哈沙德数
题目描述:
如果一个整数能够被其各个数位上的数字之和整除,则称之为 哈沙德数(Harshad number)。给你一个整数 x
。如果 x
是 哈沙德数,则返回 x
各个数位上的数字之和,否则,返回 -1
。
示例 1:
输入: x = 18
输出: 9
解释:
`x` 各个数位上的数字之和为 `9` 。 `18` 能被 `9` 整除。因此 `18` 是哈沙德数,答案是 `9` 。
示例 2:
输入: x = 23
输出:-1
解释:
`x` 各个数位上的数字之和为 `5` 。 `23` 不能被 `5` 整除。因此 `23` 不是哈沙德数,答案是 `-1` 。
提示:
1 <= x <= 100
解题分析及思路:
方法:模拟
思路:
计算x
各个数位上的数字之和
- 如果
x
能被x
各个数位上的数字之和整除,则返回x
各个数位上的数字之和 - 否则,返回
-1
。
func sumOfTheDigitsOfHarshadNumber(x int) int {
var temp = x
var sum = 0
for temp > 0 {
sum += temp % 10
temp /= 10
}
if x%sum == 0 {
return sum
}
return -1
}
复杂度:
- 时间复杂度:O(log x)
- 空间复杂度:O(1)
执行结果:
- 执行耗时:0 ms,击败了100.00% 的Go用户
- 内存消耗:2 MB,击败了63.60% 的Go用户
Tags :
通过次数 32.5K 提交次数 38.1K 通过率 85.4%