/************************************************
Algorithmen und Problemloesungen mit C++,
http://www.algorithmen-und-problemloesungen.de
Copyright @2007 by Doina Logofatu
************************************************/

#include <iostream>

unsigned long long sumDigits(unsigned long long n){
  if(n)
    return (n%10+sumDigits(n/10));
  else 
    return 0;
}

unsigned long long noDigits(unsigned long long n){
  if(n)
    return 1+noDigits(n/10);
  else 
    return 0;
}

unsigned long long pow(short b, short exp){
  if(exp)
    return b*pow(b, exp-1);
  else
    return 1;
}

unsigned long long reverse(unsigned long long n){
  if(n)
    return ((n%10)*pow(10, (short)noDigits(n)-1)+reverse(n/10));
  else 
    return 0;
}

int main(){
  unsigned long long n;
  std::cout << "n= "; std::cin >> n;
  std::cout << "sumDigits(n)= " << sumDigits(n) << std::endl;
  std::cout << "reverse(n)= " << reverse(n); 
  return 0; 
}


