# HackerRank: Recursive Digit Sum (in Algorithms)

## Problem Statement

Given an integer, we need to find the super digit of the integer.

We define super digit of an integer using the following rules:

• If $$x$$ has only 1 digit, then its super digit is $$x$$.
• Otherwise, the super digit of $$x$$ is equal to the super digit of the digit-sum of $$x$$. Here, digit-sum of a number is defined as the sum of its digits.

For example, super digit of 9875 will be calculated as:

super_digit(9875) = super_digit(9+8+7+5)
= super_digit(29)
= super_digit(2+9)
= super_digit(11)
= super_digit(1+1)
= super_digit(2)
= 2.


You are given two numbers $$n$$ and $$k$$. You have to calculate the super digit of $$p$$. $$p$$ is created when number $$n$$ is concatenated $$k$$ times. That is, if $$n=123$$ and $$k=3$$, then $$p=123123123$$.

• Time complexity: $$O(n)$$
# Recursive Digit Sum
#!/bin/python3

import sys

def digitSum(n, k):
dig = int(n)
while dig >= 10:
dig_l = map(int, str(dig))
dig = sum(dig_l)

dig_f = dig * k
while dig_f >= 10:
dig_l = map(int, str(dig_f))
dig_f = sum(dig_l)
return dig_f

if __name__ == "__main__":
n, k = input().strip().split(' ')
n, k = [str(n), int(k)]
result = digitSum(n, k)
print(result)


Tags:

Categories:

Updated: