Recursive Digit Sum

Sort by

recency

|

207 Discussions

|

  • + 0 comments

    Java

    public static int superDigit(String n, int k) {
        
            if (n.length() == 1) {
                return Integer.parseInt(String.valueOf(n.charAt(0)));
            }
            
            long sumOfDigits = 0;
            for (char c : n.toCharArray()) {
                sumOfDigits += Integer.parseInt(String.valueOf(c));
            }
            
            sumOfDigits *= k;
    
            return superDigit(String.valueOf(sumOfDigits), 1);
        }
    
  • + 0 comments

    Java:

    I dont know what im doing wrong:

    public static int superDigit(String n, int k) {
            StringBuilder superNBuilder = new StringBuilder(n);
            for(int i=0;i<k-1;i++)
            {
                superNBuilder.append(n);
            }
            String superN = superNBuilder.toString();
            BigInteger result = new BigInteger(""+superN.charAt(0));
            while(superN.length()>1){
                result=BigInteger.ZERO;
                for(int i=0;i<superN.length();i++){
                    result=result.add(new BigInteger(""+superN.charAt(i)));
                }
                superN=result.toString();
            }
            return result.intValue();
        }
    
  • + 1 comment

    I don't get it. Described example '9875 4' results with super digit 2, but in Test case 1 with the same input the expected output is 8...

  • + 0 comments

    C++ solution

    int superDigit(string n, int k) {
        long long sum = 0;
        for(char chr : n)
            sum += chr - '0';
        sum *=k;
        while (sum>9){
            long long sum2 =0;
            while (sum > 0){
                sum2 += sum % 10;
                sum = sum/10;
            }
            sum = sum2;
            
        }     
        return sum; 
    }
    
  • + 0 comments

    def superDigit(n, k):

    str1 = str(n)
    sum1 =  0
    
    for i in str1:
        sum1 += int(i)
    
    sum1 = sum1*k
    str2 = str(sum1)
    
    while len(str2) != 1:
        sum2 = 0
        for i in str2:
            sum2 += int(i)
        str2 = str(sum2)
    return sum2