Check if product of digits of a number at even and odd places is equal - GeeksforGeeks

18 Jan, 2022
Given an integer N, the task is to check whether the product of digits at even and odd places of a number are equal. If they are equal, print Yes otherwise print No.
Examples: 
Input: N = 2841 Output: Yes Product of digits at odd places = 2 * 4 = 8 Product of digits at even places = 8 * 1 = 8
Input: N = 4324 Output: No Product of digits at odd places = 4 * 2 = 8 Product of digits at even places = 3 * 4 = 12   
Approach:  
Find the product of digits at even places and store it in prodEven.
Find the product of digits at odd places and store it in prodOdd.
If prodEven = prodOdd then print Yes otherwise print No.
Below is the implementation of the above approach:  
C++
Java
Python3
C#
PHP
Javascript
// C++ implementation of the approach#include <bits/stdc++.h>using namespace std; // Function that returns true if the product// of even positioned digits is equal to// the product of odd positioned digits in nbool productEqual(int n){     // If n is a single digit number    if (n < 10)        return false;    int prodOdd = 1, prodEven = 1;     while (n > 0) {         // Take two consecutive digits        // at a time        // last digit        int digit = n % 10;        prodEven *= digit;        n /= 10;         // Second last digit        digit = n % 10;        prodOdd *= digit;        n /= 10;    }     // If the products are equal    if (prodEven == prodOdd)        return true;     // If products are not equal    return false;} // Driver codeint main(){    int n = 4324;     if (productEqual(n))        cout << "Yes";    else        cout << "No";     return 0;}
// Java implementation of the approach class GFG {     // Function that returns true    // if the product of even positioned    // digits is equal to the product of    // odd positioned digits in n    static boolean productEqual(int n)    {         // If n is a single digit number        if (n < 10)            return false;        int prodOdd = 1, prodEven = 1;         while (n > 0) {             // Take two consecutive digits            // at a time            // First digit            int digit = n % 10;            prodOdd *= digit;            n /= 10;             // If n becomes 0 then            // there's no more digit            if (n == 0)                break;             // Second digit            digit = n % 10;            prodEven *= digit;            n /= 10;        }         // If the products are equal        if (prodEven == prodOdd)            return true;         // If products are not equal        return false;    }     // Driver code    public static void main(String args[])    {        int n = 4324;         if (productEqual(n))            System.out.println("Yes");        else            System.out.println("No");    }    // This code is contributed by Ryuga}
# Python implementation of the approach # Function that returns true if the product# of even positioned digits is equal to# the product of odd positioned digits in n  def productEqual(n):    if n < 10:        return False    prodOdd = 1    prodEven = 1     # Take two consecutive digits    # at a time    # First digit    while n > 0:        digit = n % 10        prodOdd *= digit        n = n//10         # If n becomes 0 then        # there's no more digit        if n == 0:            break        digit = n % 10        prodEven *= digit        n = n//10     # If the products are equal    if prodOdd == prodEven:        return True     # If the products are not equal    return False  # Driver coden = 4324if productEqual(n):    print("Yes")else:    print("No") # This code is contributed by Shrikant13
// C# implementation of the approachusing System; class GFG {     // Function that returns true    // if the product of even positioned    // digits is equal to the product of    // odd positioned digits in n    static bool productEqual(int n)    {         // If n is a single digit number        if (n < 10)            return false;        int prodOdd = 1, prodEven = 1;         while (n > 0) {             // Take two consecutive digits            // at a time            // First digit            int digit = n % 10;            prodOdd *= digit;            n /= 10;             // If n becomes 0 then            // there's no more digit            if (n == 0)                break;             // Second digit            digit = n % 10;            prodEven *= digit;            n /= 10;        }         // If the products are equal        if (prodEven == prodOdd)            return true;         // If products are not equal        return false;    }     // Driver code    static void Main()    {        int n = 4324;         if (productEqual(n))            Console.WriteLine("Yes");        else            Console.WriteLine("No");    }} // This code is contributed by mits
<?php// PHP implementation of the approach // Function that returns true if the product// of even positioned digits is equal to// the product of odd positioned digits in nfunction productEqual($n){     // If n is a single digit number    if ($n < 10)        return false;    $prodOdd = 1;    $prodEven = 1;     while ($n > 0)    {         // Take two consecutive digits        // at a time                 // First digit        $digit = $n % 10;        $prodOdd *= $digit;        $n /= 10;         // If n becomes 0 then        // there's no more digit        if ($n == 0)            break;         // Second digit        $digit = $n % 10;        $prodEven *= $digit;        $n /= 10;    }     // If the products are equal    if ($prodEven == $prodOdd)        return true;     // If products are not equal    return false;} // Driver code$n = 4324;if (productEqual(!$n))    echo "Yes";else    echo "No"; // This code is contributed by jit_t?>
<script> // JavaScript implementation of the approach // Function that returns true if the product// of even positioned digits is equal to// the product of odd positioned digits in nfunction productEqual(n){     // If n is a single digit number    if (n < 10)        return false;    let prodOdd = 1, prodEven = 1;     while (n > 0) {         // Take two consecutive digits        // at a time        // First digit        let digit = n % 10;        prodOdd *= digit;        n = Math.floor(n / 10);         // If n becomes 0 then        // there's no more digit        if (n == 0)            break;         // Second digit        digit = n % 10;        prodEven *= digit;        n = Math.floor(n / 10);    }     // If the products are equal    if (prodEven == prodOdd)        return true;     // If products are not equal    return false;} // Driver code     let n = 4324;     if (productEqual(n))        document.write("Yes");    else        document.write("No");  // This code is contributed by Surbhi Tyagi. </script>
No
 
Time complexity: O(log10n)
Auxiliary Space: O(1)
Convert the integer to string. Traverse the string and store all even indices’ products in one variable and all odd indices’ products in another variable.If both are equal then print Yes else No
Convert the integer to string. Traverse the string and store all even indices’ products in one variable and all odd indices’ products in another variable.
If both are equal then print Yes else No
Below is the implementation:
C++
Java
Python3
C#
Javascript
// C++ implementation of the approach#include <iostream>using namespace std; void getResult(int n){         // To store the respective product    int proOdd = 1;    int proEven = 1;     // Converting integer to string    string num = to_string(n);     // Traversing the string    for(int i = 0; i < num.size(); i++)        if (i % 2 == 0)            proOdd = proOdd * (num[i] - '0');        else            proEven = proEven * (num[i] - '0');     if (proOdd == proEven)        cout << "Yes";    else        cout << "No";} // Driver codeint main(){    int n = 4324;         getResult(n);         return 0;} // This code is contributed by sudhanshugupta2019a
// Java implementation of the approach import java.util.*; class GFG{ static void getResult(int n){         // To store the respective product    int proOdd = 1;    int proEven = 1;     // Converting integer to String    String num = String.valueOf(n);     // Traversing the String    for(int i = 0; i < num.length(); i++)        if (i % 2 == 0)            proOdd = proOdd * (num.charAt(i) - '0');        else            proEven = proEven * (num.charAt(i) - '0');     if (proOdd == proEven)        System.out.print("Yes");    else        System.out.print("No");} // Driver codepublic static void main(String[] args){    int n = 4324;         getResult(n);     }} // This code is contributed by 29AjayKumar
# Python3 implementation of the approach def getResult(n):     # To store the respective product    proOdd = 1    proEven = 1         # Converting integer to string    num = str(n)         # Traversing the string    for i in range(len(num)):        if(i % 2 == 0):            proOdd = proOdd*int(num[i])        else:            proEven = proEven*int(num[i])     if(proOdd == proEven):        print("Yes")    else:        print("No")  # Driver codeif __name__ == "__main__":    n = 4324    getResult(n) # This code is contributed by vikkycirus
// C# implementation of the approachusing System;public class GFG{ static void getResult(int n){         // To store the respective product    int proOdd = 1;    int proEven = 1;     // Converting integer to String    String num = String.Join("",n);     // Traversing the String    for(int i = 0; i < num.Length; i++)        if (i % 2 == 0)            proOdd = proOdd * (num[i] - '0');        else            proEven = proEven * (num[i] - '0');     if (proOdd == proEven)        Console.Write("Yes");    else        Console.Write("No");} // Driver codepublic static void Main(String[] args){    int n = 4324;    getResult(n);}} // This code is contributed by 29AjayKumar
<script>    // Javascript implementation of the approach         function getResult(n)    {         // To store the respective product        let proOdd = 1;        let proEven = 1;         // Converting integer to String        let num = n.toString();         // Traversing the String        for(let i = 0; i < num.length; i++)            if (i % 2 == 0)                proOdd = proOdd * (num[i].charCodeAt() - '0'.charCodeAt());            else                proEven = proEven * (num[i].charCodeAt() - '0'.charCodeAt());         if (proOdd == proEven)            document.write("Yes");        else            document.write("No");    }         let n = 4324;          getResult(n); </script>
Output:
No
Time complexity: O(d), where d is the number of digits in the integer.
Auxiliary Space: O(1)
Mithun Kumar
ankthon
shrikanth13
jit_t
vikkycirus
sudhanshugupta2019a
surbhityagi15
29AjayKumar
decode2207
alok900000
samim2000
number-digits
Mathematical
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Find all factors of a natural number | Set 1
Check if a number is Palindrome
Program to print prime numbers from 1 to N.
Program to add two binary strings
Program to multiply two matrices
Fizz Buzz Implementation
Find pair with maximum GCD in an array
Find Union and Intersection of two unsorted arrays
Count all possible paths from top left to bottom right of a mXn matrix
Count ways to reach the n'th stair