Product of N with its largest odd digit in C

CServer Side ProgrammingProgramming

Given a number N with we have to product the number with its largest odd digit. If there is no odd digit then print -1.

Like we have initialized N with “153” and the largest odd digit in this number is 5 so the result would be the product of 153 with 5 i.e. 153 * 5 = 765 and if the number has no odd digit like 246 then the output must be -1.

Input − N = 198

Output − 1782

Explanation − 198 * 9 = 1782

Input − N = 15382

Output − 76910

Explanation − 15382 * 5 = 76910

Approach used below is as follows to solve the problem −

  • Take the input N.

  • Traverse every digit and look for odd digits

  • Find the largest odd element.

  • Product the largest off element with the original number N.

  • If there is no odd element update result with -1.

  • Return the result.

Algorithm

Start
In function int largestodd(int n)
   Step 1→ Declare and Initialize large as -1
   Step 2→ Loop While n > 0
      Set digit as n % 10
      If digit % 2 == 1 && digit > large then,
         Set large as digit
      Set n as n / 10
   Step 3→ Return large
In function int findproduct(int n)
   Step 1→ Declare and Initialize large set largestodd(n)
   Step 2→ If large == -1 then,
      Return -1
   Step 3→ Return (n * large)
In function int main()
   Step 1→ Initialize n as 15637
   Print the results from calling findproduct(n)
Stop

Example

 Live Demo

#include <stdio.h>
int largestodd(int n){
   // If all digits are even then
   // we wil return -1
   int large = -1;
   while (n > 0) {
      // checking from the last digit
      int digit = n % 10;
      // If the current digit is odd and
      // is greater than the large
      if (digit % 2 == 1 && digit > large)
         large = digit;
      n = n / 10;
   }
   // To return the maximum
   // odd digit of n
   return large;
}
int findproduct(int n){
   int large = largestodd(n);
   // If there are no odd digits in n
   if (large == -1)
      return -1;
   // Product of n with its largest odd digit
   return (n * large);
}
int main(){
   int n = 15637;
   printf("%d\n", findproduct(n));
   return 0;
}

Output

If run the above code it will generate the following output −

109459
raja
Published on 13-Aug-2020 11:37:20
Advertisements