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 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
Contact Us