1837-K 进制表示下的各位数字总和

Raphael Liu Lv10

给你一个整数 n10 进制)和一个基数 k ,请你将 n10 进制表示转换为 k 进制表示,计算并返回转换后各位数字的
总和

转换后,各位数字应当视作是 10 进制数字,且它们的总和也应当按 10 进制表示返回。

示例 1:

**输入:** n = 34, k = 6
**输出:** 9
**解释:** 34 (10 进制) 在 6 进制下表示为 54 。5 + 4 = 9 。

示例 2:

**输入:** n = 10, k = 10
**输出:** 1
**解释:** n 本身就是 10 进制。 1 + 0 = 1 。

提示:

  • 1 <= n <= 100
  • 2 <= k <= 10

方法一:模拟

提示 1

模拟进制转换的过程。

提示 2

事实上,我们并不需要显式求出进制转换后的结果。

思路与算法

在将 10 进制的数转换为 k 进制的过程中,我们只需要用 res 维护各位数字之和即可。

代码

[sol1-C++]
1
2
3
4
5
6
7
8
9
10
11
class Solution {
public:
int sumBase(int n, int k) {
int res = 0;
while (n){
res += n % k;
n /= k;
}
return res;
}
};
[sol1-Python3]
1
2
3
4
5
6
7
class Solution:
def sumBase(self, n: int, k: int) -> int:
res = 0
while n:
res += n % k
n //= k
return res

复杂度分析

  • 时间复杂度:O(\log n),循环的次数与 n 在 k 进制下的位数相同。

  • 空间复杂度:O(1)。

 Comments
On this page
1837-K 进制表示下的各位数字总和