Digital Root (repeated digital sum) of the given large integer
The digital root of a positive integer is found by summing the digits of the integer. If the resulting value is a single digit then that digit is the digital root. If the resulting value contains two or more digits, those digits are summed and the process is repeated. This is continued as long as necessary to obtain a single digit.
Given a number, the task is to find its digital root. The input number may be large and it may not be possible to store even if we use long long int.
Asked in ACM-ICPC
Input : num = “1234”
Output : 1
Explanation : The sum of 1+2+3+4 = 10, digSum(x) == 10,Hence ans will be 1+0 = 1
Input : num = “5674”
Output : 4
We have discussed a solution for numbers that can fit in long long it in the below post.
Finding the sum of digits of a number until the sum becomes a single digit
In this post, similar approaches are discussed for large numbers.
Find the Digital root of 65785412
- Find out all the digits of a number
- Add all the number one by one
- If the final sum is double-digit, add again to make it single digit
- The result obtained in a single digit is the digital root of a number
Find Digital root: (6 + 5 + 7 + 8 + 5 + 4 + 1 + 2) = 38 => 11 => (1 + 1) = 2
The idea is based on the fact that for a non-zero number num, the digital root is 9 if the number is divisible by 9, else the digital root is (sum of digits of num) % 9. (Please see http://www.sjsu.edu/faculty/watkins/Digitsum0.htm for details)
Find the digital root of 65785412
- Sum of digits = 6 + 5 + 7 + 8 + 5 + 4 + 1 + 2 = 38
- Since 38 is not a multiple of 9, the digital root is 38 % 9 = 2.
Time Complexity: O(n), where n is the size of the given string num
Auxiliary Space: O(1)
This article is contributed by Shiv Pratap Singh. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or if you want to share more information about the topic discussed above.