Welcome to Subscribe On Youtube

1837. Sum of Digits in Base K

Description

Given an integer n (in base 10) and a base k, return the sum of the digits of n after converting n from base 10 to base k.

After converting, each digit should be interpreted as a base 10 number, and the sum should be returned in base 10.

 

Example 1:

 Input: n = 34, k = 6 Output: 9 Explanation: 34 (base 10) expressed in base 6 is 54. 5 + 4 = 9. 

Example 2:

 Input: n = 10, k = 10 Output: 1 Explanation: n is already in base 10. 1 + 0 = 1. 

 

Constraints:

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

Solutions

Solution 1: Mathematics

We divide $n$ by $k$ and take the remainder until it is $0$. The sum of the remainders gives the result.

The time complexity is $O(\log_{k}n)$, and the space complexity is $O(1)$.

  • class Solution { public int sumBase(int n, int k) { int ans = 0; while (n != 0) { ans += n % k; n /= k; } return ans; } } 
  • class Solution { public: int sumBase(int n, int k) { int ans = 0; while (n) { ans += n % k; n /= k; } return ans; } }; 
  • class Solution: def sumBase(self, n: int, k: int) -> int: ans = 0 while n: ans += n % k n //= k return ans 
  • func sumBase(n int, k int) (ans int) { for n > 0 { ans += n % k n /= k } return } 
  • function sumBase(n: number, k: number): number { let ans = 0; while (n) { ans += n % k; n = Math.floor(n / k); } return ans; } 
  • /** * @param {number} n * @param {number} k * @return {number} */ var sumBase = function (n, k) { let ans = 0; while (n) { ans += n % k; n = Math.floor(n / k); } return ans; }; 
  • impl Solution { pub fn sum_base(mut n: i32, k: i32) -> i32 { let mut ans = 0; while n != 0 { ans += n % k; n /= k; } ans } } 

All Problems

All Solutions