Largest Even and Odd N-digit numbers of base B
Last Updated :
23 Nov, 2022
Given an integer N and base B, the task is to find the largest Even and Odd N-digit numbers of Base B in decimal form.
Examples:
Input: N = 2, B = 5
Output:
Even = 24
Odd = 23
Explanation:
Largest Even Number of 2 digits in base 5 = 44 which is 24 in decimal form.
Largest Odd Number of 2 digits in base 5 = 43 which is 23 in decimal form.
Input: N = 2, B = 10
Output:
Even = 98
Odd = 99
Approach:
To get the largest Even and Odd N-digits number of base B in decimal form is given by:
- If Base B is Even, then:
- Largest N-digit even number is (BN – 2).
- Largest N-digit odd number is (BN – 1).
- If Base B is Odd, then:
- Largest N-digit Even number is (BN – 1).
- Largest N-digit Odd number is (BN – 2).
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
void findNumbers( int n, int b)
{
int even = 0, odd = 0;
if (b % 2 == 0) {
even = pow (b, n) - 2;
odd = pow (b, n) - 1;
}
else {
even = pow (b, n) - 1;
odd = pow (b, n) - 2;
}
cout << "Even Number = " << even << '\n' ;
cout << "Odd Number = " << odd;
}
int main()
{
int N = 2, B = 5;
findNumbers(N, B);
return 0;
}
|
Java
import java.util.*;
class GFG{
static void findNumbers( int n, int b)
{
double even = 0 , odd = 0 ;
if (b % 2 == 0 ) {
even = Math.pow(b, n) - 2 ;
odd = Math.pow(b, n) - 1 ;
}
else {
even = Math.pow(b, n) - 1 ;
odd = Math.pow(b, n) - 2 ;
}
System.out.println( "Even Number = " + ( int )even );
System.out.print( "Odd Number = " + ( int )odd);
}
public static void main(String[] args)
{
int N = 2 , B = 5 ;
findNumbers(N, B);
}
}
|
Python3
def findNumbers(n, b):
even = 0 ;
odd = 0 ;
if (b % 2 = = 0 ):
even = pow (b, n) - 2 ;
odd = pow (b, n) - 1 ;
else :
even = pow (b, n) - 1 ;
odd = pow (b, n) - 2 ;
print ( "Even Number = " , int (even));
print ( "Odd Number = " , int (odd));
if __name__ = = '__main__' :
N = 2 ;
B = 5 ;
findNumbers(N, B);
|
C#
using System;
class GFG{
static void findNumbers( int n, int b)
{
double even = 0, odd = 0;
if (b % 2 == 0) {
even = Math.Pow(b, n) - 2;
odd = Math.Pow(b, n) - 1;
}
else {
even = Math.Pow(b, n) - 1;
odd = Math.Pow(b, n) - 2;
}
Console.WriteLine( "Even Number = " + ( int )even );
Console.Write( "Odd Number = " + ( int )odd);
}
public static void Main(String[] args)
{
int N = 2, B = 5;
findNumbers(N, B);
}
}
|
Javascript
<script>
function findNumbers(n, b)
{
var even = 0, odd = 0;
if (b % 2 == 0) {
even = Math.pow(b, n) - 2;
odd = Math.pow(b, n) - 1;
}
else {
even = Math.pow(b, n) - 1;
odd = Math.pow(b, n) - 2;
}
document.write( "Even Number = " + even + "<br>" );
document.write( "Odd Number = " + odd);
}
var N = 2, B = 5;
findNumbers(N, B);
</script>
|
Output
Even Number = 24
Odd Number = 23
Time complexity: O(logN) as an inbuilt pow() function is being used
Auxiliary space: O(1), If we consider a recursive call stack then it would be O(log(n))
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...