leetcode 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

思路

求出每位数字之和,然后求余,判断余数。

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public:
int sumOfTheDigitsOfHarshadNumber(int x) {
string num = to_string(x);
int a = 0;
for (int i = 0; i < num.length(); i++) {
a += num[i] - '0';
}
if (x % a == 0)
return a;
else
return -1;
}
};