/************************************************
Grundlegende Algorithmen mit Java,
http://algorithmen-und-problemloesungen.de/
Copyright @2007-2008 by Doina Logofatu
************************************************/

import java.util.*;


public class P01DigitsSumAndReverse {

    /** 
     * Summs the digits of a given number.
     * @param number the number
     * @return the summ of digits
     */
    private static long sumDigits(long number) {
        return number==0
            ?number
            :number%10+sumDigits(number/10);
    }

    /**
     * Calculates the number of digits of a given number.
     * @param number the number
     * @return the number of digits
     */
    private static long noDigits(long number) {
        return number==0 
            ?number
            :1+noDigits(number/10);
    }

    /**
     * @return the value of the base argument raised to the power of the
     * exponent argument.
     * @param base the base
     * @param exp the exponent
     */
    private static long pow(long base, long exp) {                
        return exp==0?1: base *pow(base, exp-1);
    }
    
    /**
     * Reverses the digits of the given number.
     * @param number the number
     * @return the "reversed" number
     */
    private static long reverse(long number){        
        return number==0
            ?0:((number%10)*pow(10,noDigits(number)-1)+reverse(number/10));        
    };

    
    /**
     * @param args
     */
    public static void main(String[] args) {

        System.out.print("n= ");
        Scanner sc = new Scanner(System.in);
        long n = sc.nextLong();
        System.out.print("sumDigits(n)= ");
        System.out.println(sumDigits(n) );
        System.out.print("reverse(n)= ");
        System.out.println(reverse(n));
    }
}

