3099.哈沙德数
【LetMeFly】3099.哈沙德数:计算一个数十进制下各位之和
力扣题目链接:https://leetcode.cn/problems/harshad-number/
如果一个整数能够被其各个数位上的数字之和整除,则称之为 哈沙德数(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
解题方法:计算
如何“计算一个正整数十进制下各位之和”?
当这个数不为零时,不断取出这个数的最后一位($n % 10$)。
取出最后一位后讲这个数除以$10$。
将所有取出的“最后一位”累加后,即为所求。
给定一个正整数$x$,首先计算$x$十进制下每一位之和$sum$。
- 若$x% sum==0$,则返回$sum$;
- 否则,返回$-1$。
- 时间复杂度$O(\log x)$
- 空间复杂度$O(1)$
AC代码
C++
1 |
|
Go
1 |
|
Java
1 |
|
Python
1 |
|
同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/140160763
3099.哈沙德数
https://blog.letmefly.xyz/2024/07/03/LeetCode 3099.哈沙德数/