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