Largest of two distinct numbers without using any conditional statements or operators
Last Updated :
08 Jan, 2024
Given two positive and distinct numbers, the task is to find the greatest of two given numbers without using any conditional statements(if…) and operators(?: in C/C++/Java).
Examples:
Input: a = 14, b = 15
Output: 15
Input: a = 1233133, b = 124
Output: 1233133
The Approach is to return the value on the basis of the below expression:
a * (bool)(a / b) + b * (bool)(b / a)
The expression a / b will give 1 if a > b and 0 if a < b (only after typecasting the result to bool).
Hence, the answer will be of the form either a + 0 or 0 + b depending upon which one is greater.
C++
#include <iostream>
using namespace std;
int largestNum( int a, int b)
{
return a * ( bool )(a / b) + b * ( bool )(b / a);
}
int main()
{
int a = 22, b = 1231;
cout << largestNum(a, b);
return 0;
}
|
Java
class GFG
{
static int largestNum( int a, int b)
{
return a * ((a / b) > 0 ? 1 : 0 ) + b * ((b / a) > 0 ? 1 : 0 );
}
public static void main(String[] args)
{
int a = 22 , b = 1231 ;
System.out.print(largestNum(a, b));
}
}
|
Python3
def largestNum(a, b):
return a * ( bool )(a / / b) + \
b * ( bool )(b / / a);
a = 22 ;
b = 1231 ;
print (largestNum(a, b));
|
C#
using System;
class GFG
{
static int largestNum( int a, int b)
{
return a * ((a / b) > 0 ? 1 : 0) + b * ((b / a) > 0 ? 1 : 0);
}
public static void Main(String[] args)
{
int a = 22, b = 1231;
Console.Write(largestNum(a, b));
}
}
|
PHP
<?php
function largestNum( $a , $b )
{
return ( $a * (boolean) floor (( $a / $b ))) +
( $b * (boolean) floor (( $b / $a )));
}
$a = 22; $b = 1231;
echo (largestNum( $a , $b ));
|
Javascript
<script>
function largestNum(a , b)
{
return a * (parseInt(a / b) > 0 ? 1 : 0) +
b * (parseInt(b / a) > 0 ? 1 : 0);
}
var a = 22, b = 1231;
document.write(largestNum(a, b));
</script>
|
Time complexity: O(1)
Auxiliary space: O(1)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...