Find the sum of digits of a number at even and odd places

• Difficulty Level : Easy
• Last Updated : 22 Jun, 2021

Given a number N, the task is to find the sum of digits of a number at even and odd places.

Examples:

Input: N = 54873
Output:
Sum odd = 16
Sum even = 11

Input: N = 457892
Output:
Sum odd = 20
Sum even = 15

Approach:

• First, calculate the reverse of the given number.
• To the reverse number we apply modulus operator and extract its last digit which is actually the first digit of a number so it is odd positioned digit.
• The next digit will be even positioned digit, and we can take the sum in alternating turns.

Below is the implementation of the above approach:

C++

 // C++ implementation of the approach#include using namespace std; // Function to return the reverse of a numberint reverse(int n){    int rev = 0;    while (n != 0) {        rev = (rev * 10) + (n % 10);        n /= 10;    }    return rev;} // Function to find the sum of the odd// and even positioned digits in a numbervoid getSum(int n){    n = reverse(n);    int sumOdd = 0, sumEven = 0, c = 1;     while (n != 0) {         // If c is even number then it means        // digit extracted is at even place        if (c % 2 == 0)            sumEven += n % 10;        else            sumOdd += n % 10;        n /= 10;        c++;    }     cout << "Sum odd = " << sumOdd << "\n";    cout << "Sum even = " << sumEven;} // Driver codeint main(){    int n = 457892;    getSum(n);     return 0;}

Java

 // Java implementation of the approachimport java.util.*; class GFG {     // Function to return the reverse of a number    static int reverse(int n)    {        int rev = 0;        while (n != 0) {            rev = (rev * 10) + (n % 10);            n /= 10;        }        return rev;    }     // Function to find the sum of the odd    // and even positioned digits in a number    static void getSum(int n)    {        n = reverse(n);        int sumOdd = 0, sumEven = 0, c = 1;         while (n != 0) {             // If c is even number then it means            // digit extracted is at even place            if (c % 2 == 0)                sumEven += n % 10;            else                sumOdd += n % 10;            n /= 10;            c++;        }         System.out.println("Sum odd = " + sumOdd);        System.out.println("Sum even = " + sumEven);    }     // Driver code    public static void main(String args[])    {        int n = 457892;        getSum(n);    }} // This code is contributed by// Surendra_Gangwar

Python3

 # Python3 implementation of the approach # Function to return the# reverse of a numberdef reverse(n):    rev = 0    while (n != 0):        rev = (rev * 10) + (n % 10)        n //= 10    return rev # Function to find the sum of the odd# and even positioned digits in a numberdef getSum(n):     n = reverse(n)    sumOdd = 0    sumEven = 0    c = 1     while (n != 0):         # If c is even number then it means        # digit extracted is at even place        if (c % 2 == 0):            sumEven += n % 10        else:            sumOdd += n % 10        n //= 10        c += 1     print("Sum odd =", sumOdd)    print("Sum even =", sumEven) # Driver coden = 457892getSum(n) # This code is contributed# by mohit kumar

C#

 // C# implementation of the approachusing System; class GFG {     // Function to return the reverse of a number    static int reverse(int n)    {        int rev = 0;        while (n != 0) {            rev = (rev * 10) + (n % 10);            n /= 10;        }        return rev;    }     // Function to find the sum of the odd    // and even positioned digits in a number    static void getSum(int n)    {        n = reverse(n);        int sumOdd = 0, sumEven = 0, c = 1;         while (n != 0) {             // If c is even number then it means            // digit extracted is at even place            if (c % 2 == 0)                sumEven += n % 10;            else                sumOdd += n % 10;            n /= 10;            c++;        }         Console.WriteLine("Sum odd = " + sumOdd);        Console.WriteLine("Sum even = " + sumEven);    }     // Driver code    public static void Main()    {        int n = 457892;        getSum(n);    }} // This code is contributed by// Akanksha Rai



Javascript


Output:
Sum odd = 20
Sum even = 15

Another approach: The problem can be solved without reversing the number. We can extract all the digits from the number one by one from the end. If the original number was odd then the last digit must be odd positioned else it will be even positioned. After processing a digit, we can invert the state from odd to even and vice versa.

Below is the implementation of the above approach:

C++

 // C++ implementation of the approach#include using namespace std; // Function to find the sum of the odd// and even positioned digits in a numbervoid getSum(int n){     // If n is odd then the last digit    // will be odd positioned    bool isOdd = (n % 2 == 1) ? true : false;     // To store the respective sums    int sumOdd = 0, sumEven = 0;     // While there are digits left process    while (n != 0) {         // If current digit is odd positioned        if (isOdd)            sumOdd += n % 10;         // Even positioned digit        else            sumEven += n % 10;         // Invert state        isOdd = !isOdd;         // Remove last digit        n /= 10;    }     cout << "Sum odd = " << sumOdd << "\n";    cout << "Sum even = " << sumEven;} // Driver codeint main(){    int n = 457892;    getSum(n);     return 0;}

Java

 // Java implementation of the above approachclass GFG{     // Function to find the sum of the odd// and even positioned digits in a numberstatic void getSum(int n){         // If n is odd then the last digit    // will be odd positioned    boolean isOdd = (n % 2 == 1) ? true : false;     // To store the respective sums    int sumOdd = 0, sumEven = 0;     // While there are digits left process    while (n != 0)    {                 // If current digit is odd positioned        if (isOdd)            sumOdd += n % 10;         // Even positioned digit        else            sumEven += n % 10;         // Invert state        isOdd = !isOdd;         // Remove last digit        n /= 10;    }    System.out.println("Sum odd = " + sumOdd);    System.out.println("Sum even = " + sumEven);} // Driver codepublic static void main(String[] args){    int n = 457892;    getSum(n);}} // This code is contributed by jrishabh99

Python3

 # Python3 implementation of the approach # Function to find the sum of the odd# and even positioned digits in a numberdef getSum(n):     # If n is odd then the last digit    # will be odd positioned    if (n % 2 == 1) :        isOdd = True    else:        isOdd = False     # To store the respective sums    sumOdd = 0    sumEven = 0     # While there are digits left process    while (n != 0) :         # If current digit is odd positioned        if (isOdd):            sumOdd += n % 10         # Even positioned digit        else:            sumEven += n % 10         # Invert state        isOdd = not isOdd         # Remove last digit        n //= 10         print( "Sum odd = " , sumOdd )    print("Sum even = " ,sumEven) # Driver codeif __name__ =="__main__":    n = 457892    getSum(n) # This code is contributed by chitranayal

C#

 // C# implementation of the above approachusing System; class GFG{     // Function to find the sum of the odd// and even positioned digits in a numberstatic void getSum(int n){         // If n is odd then the last digit    // will be odd positioned    bool isOdd = (n % 2 == 1) ? true : false;         // To store the respective sums    int sumOdd = 0, sumEven = 0;         // While there are digits left process    while (n != 0)    {                 // If current digit is odd positioned        if (isOdd)            sumOdd += n % 10;          // Even positioned digit        else            sumEven += n % 10;          // Invert state        isOdd = !isOdd;          // Remove last digit        n /= 10;    }    Console.WriteLine("Sum odd = " + sumOdd);    Console.Write("Sum even = " + sumEven);} // Driver code   static public void Main (){    int n = 457892;         getSum(n);}} // This code is contributed by offbeat

Javascript


Output:
Sum odd = 20
Sum even = 15

Method #3:Using string() method:

1. Convert the integer to string. Traverse the string and store all even indices sum in one variable and all odd indices sum in another variable.

Below is the implementation:

C++

 // C++ implementation of the approach#include using namespace std; // Function to find the sum of the odd// and even positioned digits in a numbervoid getSum(int n){         // To store the respective sums    int sumOdd = 0, sumEven = 0;     // Converting integer to string    string num = to_string(n);     // Traversing the string    for(int i = 0; i < num.size(); i++)    {        if (i % 2 == 0)            sumOdd = sumOdd + (int(num[i]) - 48);        else            sumEven = sumEven + (int(num[i]) - 48);    }    cout << "Sum odd = " << sumOdd << "\n";    cout << "Sum even = " << sumEven << "\n";} // Driver codeint main(){    int n = 457892;    getSum(n);         return 0;} // This code is contributed by souravmahato348

Java

 // Java implementation of the approach  import java.util.*;  class GFG{  static void getSum(int n){    // To store the respective sum    int sumOdd = 0;    int sumEven = 0;      // Converting integer to String    String num = String.valueOf(n);      // Traversing the String    for(int i = 0; i < num.length(); i++)        if (i % 2 == 0)            sumOdd = sumOdd + (num.charAt(i) - '0');        else            sumEven = sumEven + (num.charAt(i) - '0');      System.out.println("Sum odd = " + sumOdd);    System.out.println("Sum even = " + sumEven);}  // Driver codepublic static void main(String[] args){    int n = 457892;    getSum(n);}} // Code contributed by swarnalii

Python3

 # Python3 implementation of the approach # Function to find the sum of the odd# and even positioned digits in a numberdef getSum(n):     # To store the respective sums    sumOdd = 0    sumEven = 0         # Converting integer to string    num = str(n)         # Traversing the string    for i in range(len(num)):        if(i % 2 == 0):            sumOdd = sumOdd+int(num[i])        else:            sumEven = sumEven+int(num[i])     print("Sum odd = ", sumOdd)    print("Sum even = ", sumEven)  # Driver codeif __name__ == "__main__":    n = 457892    getSum(n) # This code is contributed by vikkycirus

C#

 // C# implementation of the approachusing System; class GFG{ static void getSum(int n){         // To store the respective sum    int sumOdd = 0;    int sumEven = 0;     // Converting integer to String    String num = n.ToString();     // Traversing the String    for(int i = 0; i < num.Length; i++)        if (i % 2 == 0)            sumOdd = sumOdd + (num[i] - '0');        else            sumEven = sumEven + (num[i] - '0');     Console.WriteLine("Sum odd = " + sumOdd);    Console.WriteLine("Sum even = " + sumEven);} // Driver codepublic static void Main(){    int n = 457892;    getSum(n);}} // This code is contributed by subhammahato348

Javascript



Output:

Sum odd = 20
Sum even = 15

My Personal Notes arrow_drop_up