Given two positive numbers calculate the minimum and maximum possible sums of two numbers. We are allowed to replace digit 5 with digit 6 and vice versa in either or both the given numbers.
Examples :
Input : x1 = 645 x2 = 666
Output : Minimum Sum: 1100 (545 + 555)
Maximum Sum: 1312 (646 + 666)
Input: x1 = 5466 x2 = 4555
Output: Minimum sum: 10010
Maximum Sum: 11132
Since both numbers are positive, we always get maximum sum if replace 5 with 6 in both numbers. And we get a minimum sum if we replace 6 with 5 in both numbers. Below is C++ implementation based on this fact.
C++
#include<bits/stdc++.h>
using namespace std;
int replaceDig( int x, int from, int to)
{
int result = 0;
int multiply = 1;
while (x > 0)
{
int reminder = x % 10;
if (reminder == from)
result = result + to * multiply;
else
result = result + reminder * multiply;
multiply *= 10;
x = x / 10;
}
return result;
}
void calculateMinMaxSum( int x1, int x2)
{
int minSum = replaceDig(x1, 6, 5) +
replaceDig(x2, 6, 5);
int maxSum = replaceDig(x1, 5, 6) +
replaceDig(x2, 5, 6);
cout << "Minimum sum = " << minSum;
cout << "\nMaximum sum = " << maxSum;
}
int main()
{
int x1 = 5466, x2 = 4555;
calculateMinMaxSum(x1, x2);
return 0;
}
|
Java
import java.io.*;
class GFG {
static int replaceDig( int x, int from, int to)
{
int result = 0 ;
int multiply = 1 ;
while (x > 0 )
{
int reminder = x % 10 ;
if (reminder == from)
result = result + to * multiply;
else
result = result + reminder * multiply;
multiply *= 10 ;
x = x / 10 ;
}
return result;
}
static void calculateMinMaxSum( int x1, int x2)
{
int minSum = replaceDig(x1, 6 , 5 ) +
replaceDig(x2, 6 , 5 );
int maxSum = replaceDig(x1, 5 , 6 ) +
replaceDig(x2, 5 , 6 );
System.out.print( "Minimum sum = " + minSum);
System.out.print( "\nMaximum sum = " + maxSum);
}
public static void main (String[] args)
{
int x1 = 5466 , x2 = 4555 ;
calculateMinMaxSum(x1, x2);
}
}
|
Python3
def replaceDig(x, from1, to):
result = 0
multiply = 1
while (x > 0 ):
reminder = x % 10
if (reminder = = from1):
result = result + to * multiply
else :
result = result + reminder * multiply
multiply * = 10
x = int (x / 10 )
return result
def calculateMinMaxSum(x1, x2):
minSum = replaceDig(x1, 6 , 5 ) + replaceDig(x2, 6 , 5 )
maxSum = replaceDig(x1, 5 , 6 ) + replaceDig(x2, 5 , 6 )
print ( "Minimum sum =" , minSum)
print ( "Maximum sum =" , maxSum,end = " " )
if __name__ = = '__main__' :
x1 = 5466
x2 = 4555
calculateMinMaxSum(x1, x2)
|
C#
using System;
class GFG {
static int replaceDig( int x, int from ,
int to)
{
int result = 0;
int multiply = 1;
while (x > 0)
{
int reminder = x % 10;
if (reminder == from )
result = result + to * multiply;
else
result = result + reminder * multiply;
multiply *= 10;
x = x / 10;
}
return result;
}
static void calculateMinMaxSum( int x1, int x2)
{
int minSum = replaceDig(x1, 6, 5) +
replaceDig(x2, 6, 5);
int maxSum = replaceDig(x1, 5, 6) +
replaceDig(x2, 5, 6);
Console.Write( "Minimum sum = " + minSum);
Console.Write( "\nMaximum sum = " + maxSum);
}
public static void Main ()
{
int x1 = 5466, x2 = 4555;
calculateMinMaxSum(x1, x2);
}
}
|
PHP
<?php
function replaceDig( $x , $from , $to )
{
$result = 0;
$multiply = 1;
while ( $x > 0)
{
$reminder = $x % 10;
if ( $reminder == $from )
$result = $result + $to *
$multiply ;
else
$result = $result +
$reminder *
$multiply ;
$multiply *= 10;
$x = $x / 10;
}
return $result ;
}
function calculateMinMaxSum( $x1 , $x2 )
{
$minSum = replaceDig( $x1 , 6, 5) +
replaceDig( $x2 , 6, 5);
$maxSum = replaceDig( $x1 , 5, 6) +
replaceDig( $x2 , 5, 6);
echo "Minimum sum = " , $minSum , "\n" ;
echo "Maximum sum = " , $maxSum ;
}
$x1 = 5466; $x2 = 4555;
calculateMinMaxSum( $x1 , $x2 );
?>
|
Javascript
<script>
function replaceDig(x , from , to)
{
var result = 0;
var multiply = 1;
while (x > 0)
{
var reminder = x % 10;
if (reminder == from)
result = result + to * multiply;
else
result = result + reminder * multiply;
multiply *= 10;
x = parseInt(x / 10);
}
return result;
}
function calculateMinMaxSum(x1 , x2)
{
var minSum = replaceDig(x1, 6, 5) +
replaceDig(x2, 6, 5);
var maxSum = replaceDig(x1, 5, 6) +
replaceDig(x2, 5, 6);
document.write( "Minimum sum = " + minSum);
document.write( "<br>Maximum sum = " + maxSum);
}
var x1 = 5466, x2 = 4555;
calculateMinMaxSum(x1, x2);
</script>
|
OutputMinimum sum = 10010
Maximum sum = 11132
Time complexity : O(logn)
Auxiliary Space : O(1)
This article is contributed by Roshni Agarwal. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.