Maximum and minimum sums from two numbers with digit replacements
Last Updated :
14 Dec, 2022
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>
|
Output
Minimum sum = 10010
Maximum sum = 11132
Time complexity : O(logn)
Auxiliary Space : O(1)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...