Saturday, December 28, 2024
Google search engine
HomeData Modelling & AIGiven a number N in decimal base, find the sum of digits...

Given a number N in decimal base, find the sum of digits in any base B

Given a number N in decimal base, the task is to find the sum of digits of the number in any base B
Examples: 
 

Input: N = 100, B = 8 
Output:
Explanation: 
(100)8 = 144 
Sum(144) = 1 + 4 + 4 = 9

Input: N = 50, B = 2 
Output:
Explanation: 
(50)2 = 110010 
Sum(110010) = 1 + 1 + 0 + 0 + 1 + 0 = 3 

 

Approach: Find unit digit by performing modulo operation on number N by base B and updating the number again by N = N / B and update sum by adding the unit digit at each step. 

Below is the implementation of above approach 

C++




// C++ Implementation to Compute Sum of
// Digits of Number N in Base B
 
#include <iostream>
using namespace std;
 
// Function to compute sum of
// Digits of Number N in base B
int sumOfDigit(int n, int b)
{
     
    // Initialize sum with 0
    int unitDigit, sum = 0;
    while (n > 0) {
         
        // Compute unit digit of the number
        unitDigit = n % b;
 
        // Add unit digit in sum
        sum += unitDigit;
 
        // Update value of Number
        n = n / b;
    }
    return sum;
}
 
// Driver function
int main()
{
    int n = 50;
    int b = 2;
    cout << sumOfDigit(n, b);
    return 0;
}


Java




// Java Implementation to Compute Sum of
// Digits of Number N in Base B
import java.io.*;
public class GFG
{
 
// Function to compute sum of
// Digits of Number N in base B
static int sumOfDigit(int n, int b)
{
     
    // Initialize sum with 0
    int unitDigit, sum = 0;
    while (n > 0)
    {
         
        // Compute unit digit of the number
        unitDigit = n % b;
 
        // Add unit digit in sum
        sum += unitDigit;
 
        // Update value of Number
        n = n / b;
    }
    return sum;
}
 
// Driver code
public static void main(String[] args)
{
    int n = 50;
    int b = 2;
    System.out.print(sumOfDigit(n, b));
}
}
 
// This code is contributed by PrinciRaj1992


Python3




# Python3 Implementation to Compute Sum of
# Digits of Number N in Base B
 
# Function to compute sum of
# Digits of Number N in base B
def sumOfDigit(n, b):
 
    # Initialize sum with 0
    unitDigit = 0
    sum = 0
    while (n > 0):
         
        # Compute unit digit of the number
        unitDigit = n % b
 
        # Add unit digit in sum
        sum += unitDigit
 
        # Update value of Number
        n = n // b
 
    return sum
 
# Driver code
n = 50
b = 2
print(sumOfDigit(n, b))
 
# This code is contributed by ApurvaRaj


C#




// C# Implementation to Compute Sum of
// Digits of Number N in Base B
using System;
 
class GFG
{
 
// Function to compute sum of
// Digits of Number N in base B
static int sumOfDigit(int n, int b)
{
     
    // Initialize sum with 0
    int unitDigit, sum = 0;
    while (n > 0)
    {
         
        // Compute unit digit of the number
        unitDigit = n % b;
 
        // Add unit digit in sum
        sum += unitDigit;
 
        // Update value of Number
        n = n / b;
    }
    return sum;
}
 
// Driver code
public static void Main(String[] args)
{
    int n = 50;
    int b = 2;
    Console.Write(sumOfDigit(n, b));
}
}
 
// This code is contributed by PrinciRaj1992


Javascript




<script>
 
// Javascript Implementation to Compute Sum of
// Digits of Number N in Base B
 
// Function to compute sum of
// Digits of Number N in base B
function sumOfDigit(n, b)
{
     
    // Initialize sum with 0
    var unitDigit, sum = 0;
    while (n > 0)
    {
         
        // Compute unit digit of the number
        unitDigit = n % b;
 
        // Add unit digit in sum
        sum += unitDigit;
 
        // Update value of Number
        n = parseInt(n / b);
    }
    return sum;
}
 
// Driver function
var n = 50;
var b = 2;
document.write(sumOfDigit(n, b));
 
// This code is contributed by rutvik_56.
</script>


Output

3

Time Complexity: O(logbN), where N is the given number
Auxiliary Space: O(1)

Approach 2: Using Recursion:

In this approach, we define a function sumOfDigit that takes two arguments – the number n and the base b. The function first checks for the base case, which is when the number becomes 0, and returns 0. Otherwise, the function computes the sum of the unit digit (i.e., the remainder when n is divided by b) and the sum of digits of the quotient (i.e., n divided by b) recursively.

This approach is also efficient and readable, and can handle large numbers without the risk of overflow.

Here is the code  of above approach:

C++




#include <iostream>
using namespace std;
 
// Function to compute sum of digits of number n in base b
int sumOfDigit(int n, int b) {
    // Base case
    if (n == 0) {
        return 0;
    }
 
    // Recursive step
    return (n % b) + sumOfDigit(n / b, b);
}
 
// Driver function
int main() {
    int n = 50;
    int b = 2;
    cout << sumOfDigit(n, b) << endl;
    return 0;
}


Java




/*package whatever //do not write package name here */
 
public class SumOfDigits {
    // Function to compute sum of digits of number n in base b
    public static int sumOfDigit(int n, int b) {
        // Base case
        if (n == 0) {
            return 0;
        }
 
        // Recursive step
        return (n % b) + sumOfDigit(n / b, b);
    }
 
    // Driver function
    public static void main(String[] args) {
        int n = 50;
        int b = 2;
        System.out.println(sumOfDigit(n, b));
    }
}


Python3




def sum_of_digit(n, b):
    # Base case
    if n == 0:
        return 0
     
    # Recursive step
    return (n % b) + sum_of_digit(n // b, b)
 
# Driver function
if __name__ == '__main__':
    n = 50
    b = 2
    print(sum_of_digit(n, b))


C#




using System;
 
public class SumOfDigits
{
  // Function to compute sum of digits of number n in base b
  public static int SumOfDigit(int n, int b)
  {
    // Base case
    if (n == 0)
    {
      return 0;
    }
 
    // Recursive step
    return (n % b) + SumOfDigit(n / b, b);
  }
 
  // Driver function
  public static void Main(string[] args)
  {
    int n = 50;
    int b = 2;
    System.Console.WriteLine(SumOfDigit(n, b));
  }
}


Javascript




// JavaScript program for the above approach.
 
function sum_of_digit(n, b) {
// Base case
if (n == 0) {
return 0;
}
 
// Recursive step
return (n % b) + sum_of_digit(Math.floor(n / b), b);
}
 
// Driver function
let n = 50;
let b = 2;
console.log(sum_of_digit(n, b));
 
// Contributed by adityasharmadev01


Output

3

Time Complexity: O(logbN), where N is the given number
Auxiliary Space: O(1)

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

Dominic Rubhabha-Wardslaus
Dominic Rubhabha-Wardslaushttp://wardslaus.com
infosec,malicious & dos attacks generator, boot rom exploit philanthropist , wild hacker , game developer,
RELATED ARTICLES

Most Popular

Recent Comments