In this article, we will be solving a problem in which we need to find the Super Digit of integer p (obtained by concatenating n, k times )and return its value.
Given an integer, we need to find the superDigit of the integer.
superDigit is defined as :
If X has only one digit, then its super digit is 1.
Otherwise, the super digit of X is equal to the super digit of the sum of the digits of X.
for example, the superDigit of 9875 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
Complete the function superDigit in the editor below. It must return the calculated super digit as an integer.
superDigit has the following parameter(s):
Example:
n=9875
k=4
The number n is created by concatenating the string n, k times so the initial p = 9875987598759875.
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)
I strongly recommend you to try it yourself before looking into the solution.
INPUT FORMAT:
The first line contains two space separated integers, n and k.
Here you need to take a number 'n' as Input and then concatenate it to ' k ' times and after concatenation, the final result will be stored as p.
now, we need to calculate superDigit of p. superDigit of a number is adding of digits of a number until a single digit is obtained.
first, we need to calculate the sum of digits of a number. for that, we need a function that computes the sum of digits of a number.
private static int fun(long p)
{
if (p<10)
return (int) p;
return fun(fun(p/10)+p%10);
}
the above function calculates and returns the sum of digits of a number up to a single digit.
now, we need to take a string n and concatenate it k times and convert it into integer and assign it to ' p '.
CODE:
import java.io.*;
class Result
{
public static int superDigit(String n, long k) {
long num = 0;
for(int i=0; i<n.length(); i++)
{
num += Integer.parseInt(n.charAt(i)+"");
}
num = fun(num*k);
int p = (int) num;
return fun(p);}
private static int fun(long p)
{
if (p<10)
return (int) p;
return fun(fun(p/10)+p%10);
}
}
public class Solution
{
public static void main(String[] args) throws IOException
{
Scanner s=new Scanner(System.in);
String[] firstMultipleInput =s.nextLine().replaceAll("\\s+$", "").split(" ");
String n = firstMultipleInput[0];
int k = Integer.parseInt(firstMultipleInput[1]);
int result = Result.superDigit(n, k);
System.out.println((String.valueOf(result)));
s.close();
}
}
you can try to solve this problem here.
Submitted by CHATTETI.THARUN (Tharun)
Download packets of source code on Coders Packet
Comments