Largest of two distinct numbers without using any conditional statements or operators
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)
Last Updated :
08 Jan, 2024
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...