Recursive sum of digits of a number formed by repeated appends

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 :  
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++
Java
Python3
C#
PHP
Javascript
// 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 programint main(){    int n = 24, x = 3;    cout << repeatedNumberSum(n, x) << endl;    return 0;}
// 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.
# 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 numberdef 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 Coden = 24; x = 3print(repeatedNumberSum(n, x)) # This code is contributed by Ajit.
// 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 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.?>
<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 Codelet n = 24;let x = 3; document.write(repeatedNumberSum(n, x)); // This code is contributed by _saurabh_jaiswal. </script>
Output : 
9
 
vt_m
_saurabh_jaiswal
saurabh1990aror
Modular Arithmetic
number-digits
Mathematical
Mathematical
Modular Arithmetic
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.