Skip to content
Related Articles

Related Articles

Improve Article

Recursive sum of digits of a number formed by repeated appends

  • Difficulty Level : Basic
  • Last Updated : 25 Aug, 2021

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 :  

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

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 implementation 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.
?>

Javascript




<script>
 
// Javascript 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
let n = 24;
let x = 3;
 
document.write(repeatedNumberSum(n, x));
 
// This code is contributed by _saurabh_jaiswal.
 
</script>

Output : 

9

 




My Personal Notes arrow_drop_up
Recommended Articles
Page :