In this Recursive Digit Sum HackerRank solution, We define super digit of an integer using the following rules:
Given an integer, we need to find the super digit of the integer.
- If has only digit, then its super digit is .
- Otherwise, the super digit of is equal to the super digit of the sum of the digits of .
For example, the super digit of will be calculated as:
super_digit(9875) 9+8+7+5 = 29
super_digit(29) 2 + 9 = 11
super_digit(11) 1 + 1 = 2
super_digit(2) = 2
Example
The number is created by concatenating the string times so the initial .
superDigit(p) = superDigit(9875987598759875)
9+8+7+5+9+8+7+5+9+8+7+5+9+8+7+5 = 116
superDigit(p) = superDigit(116)
1+1+6 = 8
superDigit(p) = superDigit(8)
All of the digits of sum to . The digits of sum to . is only one digit, so it is the super digit.
Function Description
Complete the function superDigit in the editor below. It must return the calculated super digit as an integer.
superDigit has the following parameter(s):
- string n: a string representation of an integer
- int k: the times to concatenate to make
Returns
- int: the super digit of repeated times
Input Format
The first line contains two space separated integers, and .
Constraints
Recursive Digit Sum HackerRank solution
I will Provide solution in Multiple programming languages for you. If you are not able to find the code in required language then please share in comments so that our team can help you.
Problem Solution in C#
public static int superDigit(string n, int k)
{
long sum = 0;
string str = n;
do
{
sum = addDigits(str);
str = sum.ToString();
} while (sum > 9);
sum = sum * k;
str = sum.ToString();
do
{
sum = addDigits(str);
str = sum.ToString();
} while (sum > 9);
return (int)sum;
}
public static long addDigits(string str)
{
long sum = 0;
foreach (char c in str)
{
sum += int.Parse(c.ToString());
}
return sum;
}
Problem Solution in Python
def superDigit(n, k):
n = [int(value)*k for value in n]
idx,result = 0,0
while True:
if idx == len(n):
idx = 0
n = str(result)
result = 0
# print(n,result)
if len(n) == 1:
break
result += int(n[idx])
idx += 1
return int(n)
Problem Solution in JavaScript
function superDigit(n, k) {
let starter=0;
for(let i = 0; i<n.length; i++){
starter +=parseInt(n.toString()[i])
}
let superNo = starter*k;
while(superNo>9){
let temp = 0;
for(let i = 0; i<superNo.toString().length; i++){
temp +=parseInt(superNo.toString()[i])
}
superNo = temp;
}
return superNo
}