-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRecursiveDigitSum.java
More file actions
96 lines (78 loc) · 2.56 KB
/
RecursiveDigitSum.java
File metadata and controls
96 lines (78 loc) · 2.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/*
Super Digit Problem
Super Digit of a number (int) is defined using the following rules:
Given an integer, we need to find its super digit.
If the number has only one digit, then its super digit is the number itself.
Otherwise, the super digit is the super digit of the sum of the digits of the number.
Example:
For the number 9875:
The sum of the digits of 9875 is 9 + 8 + 7 + 5 = 29.
The sum of the digits of 29 is 2 + 9 = 11.
The sum of the digits of 11 is 1 + 1 = 2.
Since 2 has only one digit, it is the super digit.
Additional Case with Repetition:
Given a number n and an integer k, we create a new number by concatenating n k times. We then calculate the super digit of this large number.
*/
import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.function.*;
import java.util.regex.*;
import java.util.stream.*;
import static java.util.stream.Collectors.joining;
import static java.util.stream.Collectors.toList;
class Result
{
/*
* Complete the 'superDigit' function below.
*
* The function is expected to return an INTEGER.
* The function accepts following parameters:
* 1. STRING n
* 2. INTEGER k
*/
public static int superDigit(String n, int k)
{
// Write your code here
long nSum = 0;
for(char nDigits : n.toCharArray())
{
nSum += Character.getNumericValue(nDigits);
}
nSum *= k;
return findnSuperDigit(nSum);
}
public static int findnSuperDigit(long m)
{
long mSum = 0;
if(m < 10)
{
return (int) m;
}
while(m > 0)
{
mSum += m % 10;
m /= 10;
}
return findnSuperDigit(mSum);
}
}
public class RecursiveDigitSum
{
public static void main(String[] args) throws IOException
{
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
String[] firstMultipleInput = bufferedReader.readLine().replaceAll("\\s+$", "").split(" ");
String n = firstMultipleInput[0];
int k = Integer.parseInt(firstMultipleInput[1]);
int result = Result.superDigit(n, k);
bufferedWriter.write(String.valueOf(result));
bufferedWriter.newLine();
bufferedReader.close();
bufferedWriter.close();
}
}