Tutorialspoint.dev

Recursive sum of digits of a number formed by repeated appends

Given two positive number N and X. The task is to find the sum of digits of a number formed by N repeating X number of times until sum become single digit.

Examples :

Input : N = 24, X = 3
Output : 9
Number formed after repeating 24 three time = 242424
Sum = 2 + 4 + 2 + 4 + 2 + 4
    = 18
Sum is not the single digit, so finding 
the sum of digits of 18,
1 + 8 = 9

Input : N = 4, X = 4
Output : 7



As discussed in this post, recursive sum of digits is 9 if number is multiple of 9, else n % 9. Since divisibility and modular arithmetic are compatible with multiplication, we simply find result for single occurrence, multiply result with x and again find the result.

How does this work ?
Lets N = 24 and X = 3.
So, sumUntilSingle(N) = 2 + 4 = 6.
Multiplying 6 by 3 = 18
sumUntilSingle(18) = 9.

Below is the implemenatation of this approach:

C++

// C++ program to find Sum of digits of a
// number formed by repeating a number X number of
// times until sum become single digit.
#include <bits/stdc++.h>
using namespace std;
  
// return single digit sum of a number.
int digSum(int n)
{
    if (n == 0)
        return 0;
    return (n % 9 == 0) ? 9 : (n % 9);
}
  
// Returns recursive sum of digits of a number 
// formed by repeating a number X number of
// times until sum become single digit.
int repeatedNumberSum(int n, int x)
{
    int sum = x*digSum(n);
    return digSum(sum);
}
  
// Driver program
int main()
{
    int n = 24, x = 3;
    cout << repeatedNumberSum(n, x) << endl;
    return 0;
}

Java

// Java program to find Sum of digits of a
// number formed by repeating a number X number of
// times until sum become single digit.
  
class GFG {
      
    // return single digit sum of a number.
    static int digSum(int n)
    {
        if (n == 0)
            return 0;
        return (n % 9 == 0) ? 9 : (n % 9);
    }
      
    // Returns recursive sum of digits of a number 
    // formed by repeating a number X number of
    // times until sum become single digit.
    static int repeatedNumberSum(int n, int x)
    {
        int sum = x * digSum(n);
        return digSum(sum);
    }
          
    // Driver program 
    public static void main (String[] args) 
    {
        int n = 24, x = 3;
        System.out.println(repeatedNumberSum(n, x));
    }
}
  
// This code is contributed by Ajit.

Python3

# Python program to find Sum of digits of a
# number formed by repeating a number X number 
# of times until sum become single digit.
  
# Return single digit sum of a number
def digSum(n):
    if n == 0:
        return 0
    return (n % 9 == 0) and 9 or (n % 9)
      
# Returns recursive sum of digits of a number 
# formed by repeating a number X number of
# times until sum become single digit.
def repeatedNumberSum(n, x):
    sum = x * digSum(n)
    return digSum(sum)
  
# Driver Code
n = 24; x = 3
print(repeatedNumberSum(n, x))
  
# This code is contributed by Ajit.

C#

// C# program to find Sum of digits of a
// number formed by repeating a number X 
// number of times until sum becomes
// single digit.
using System;
  
public class GFG
{     
    // return single digit sum of a number.
    static int digSum(int n)
    {
        if (n == 0)
            return 0;
              
        return (n % 9 == 0) ? 9 : (n % 9);
    }
      
    // Returns recursive sum of digits of a
    // number formed by repeating a number X
    // number of times until sum become 
    // single digit.
    static int repeatedNumberSum(int n, int x)
    {
        int sum = x * digSum(n);
        return digSum(sum);
    }
      
    // driver program
    public static void Main () 
    {
        int n = 24, x = 3;
        Console.Write( repeatedNumberSum(n, x));
    }
}
  
// This code is contributed by Sam007

PHP

<?php
// PHP program to find Sum 
// of digits of a number 
// formed by repeating a number
// X number of times until
// sum becomes single digit.
  
// return single digit
// sum of a number.
function digSum($n)
{
    if ($n == 0)
        return 0;
    return ($n % 9 == 0) ? 9 : ($n % 9);
}
  
// Returns recursive sum of 
// digits of a number formed 
// by repeating a number X 
// number of times until sum 
// become single digit.
function repeatedNumberSum( $n, $x)
{
    $sum = $x * digSum($n);
    return digSum($sum);
}
  
// Driver Code
$n = 24; $x = 3;
echo repeatedNumberSum($n, $x);
  
// This code is contributed by anuj_67.
?>


Output :

9


This article is attributed to GeeksforGeeks.org

You Might Also Like

leave a comment

code

0 Comments

load comments

Subscribe to Our Newsletter