给定两个正数,计算两个数的最小和最大和。我们可以在给定数字中的一个或两个中将数字5替换为数字6,反之亦然。
例子 :
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
由于两个数字都是正数,因此如果将两个数字中的5替换为6,我们总会得到最大的和。如果我们用两个数字中的5代替6,我们将得到最小和。下面是基于此事实的C++实现。
C++
// C++ program to find maximum and minimum
// possible sums of two numbers that we can
// get if replacing digit from 5 to 6 and vice
// versa are allowed.
#include
using namespace std;
// Find new value of x after replacing digit
// "from" to "to"
int replaceDig(int x, int from, int to)
{
int result = 0;
int multiply = 1;
while (x > 0)
{
int reminder = x % 10;
// Required digit found, replace it
if (reminder == from)
result = result + to * multiply;
else
result = result + reminder * multiply;
multiply *= 10;
x = x / 10;
}
return result;
}
// Returns maximum and minimum possible sums of
// x1 and x2 if digit replacements are allowed.
void calculateMinMaxSum(int x1, int x2)
{
// We always get minimum sum if we replace
// 6 with 5.
int minSum = replaceDig(x1, 6, 5) +
replaceDig(x2, 6, 5);
// We always get maximum sum if we replace
// 5 with 6.
int maxSum = replaceDig(x1, 5, 6) +
replaceDig(x2, 5, 6);
cout << "Minimum sum = " << minSum;
cout << "nMaximum sum = " << maxSum;
}
// Driver code
int main()
{
int x1 = 5466, x2 = 4555;
calculateMinMaxSum(x1, x2);
return 0;
}
Java
// Java program to find maximum and minimum
// possible sums of two numbers that we can
// get if replacing digit from 5 to 6 and vice
// versa are allowed.
class GFG {
// Find new value of x after replacing digit
// "from" to "to"
static int replaceDig(int x, int from, int to)
{
int result = 0;
int multiply = 1;
while (x > 0)
{
int reminder = x % 10;
// Required digit found, replace it
if (reminder == from)
result = result + to * multiply;
else
result = result + reminder * multiply;
multiply *= 10;
x = x / 10;
}
return result;
}
// Returns maximum and minimum possible sums of
// x1 and x2 if digit replacements are allowed.
static void calculateMinMaxSum(int x1, int x2)
{
// We always get minimum sum if we replace
// 6 with 5.
int minSum = replaceDig(x1, 6, 5) +
replaceDig(x2, 6, 5);
// We always get maximum sum if we replace
// 5 with 6.
int maxSum = replaceDig(x1, 5, 6) +
replaceDig(x2, 5, 6);
System.out.print("Minimum sum = " + minSum);
System.out.print("\nMaximum sum = " + maxSum);
}
// Driver code
public static void main (String[] args)
{
int x1 = 5466, x2 = 4555;
calculateMinMaxSum(x1, x2);
}
}
// This code is contributed by Anant Agarwal.
Python3
# Python3 program to find maximum
# and minimum possible sums of
# two numbers that we can get if
# replacing digit from 5 to 6
# and vice versa are allowed.
# Find new value of x after
# replacing digit "from" to "to"
def replaceDig(x, from1, to):
result = 0
multiply = 1
while (x > 0):
reminder = x % 10
# Required digit found,
# replace it
if (reminder == from1):
result = result + to * multiply
else:
result = result + reminder * multiply
multiply *= 10
x = int(x / 10)
return result
# Returns maximum and minimum
# possible sums of x1 and x2
# if digit replacements are allowed.
def calculateMinMaxSum(x1, x2):
# We always get minimum sum
# if we replace 6 with 5.
minSum = replaceDig(x1, 6, 5) +replaceDig(x2, 6, 5)
# We always get maximum sum
# if we replace 5 with 6.
maxSum = replaceDig(x1, 5, 6) +replaceDig(x2, 5, 6)
print("Minimum sum =" , minSum)
print("Maximum sum =" , maxSum,end=" ")
# Driver code
if __name__=='__main__':
x1 = 5466
x2 = 4555
calculateMinMaxSum(x1, x2)
# This code is contributed
# by mits
C#
// C# program to find maximum and minimum
// possible sums of two numbers that we can
// get if replacing digit from 5 to 6 and vice
// versa are allowed.
using System;
class GFG {
// Find new value of x after
// replacing digit "from" to "to"
static int replaceDig(int x, int from,
int to)
{
int result = 0;
int multiply = 1;
while (x > 0)
{
int reminder = x % 10;
// Required digit found,
// replace it
if (reminder == from)
result = result + to * multiply;
else
result = result + reminder * multiply;
multiply *= 10;
x = x / 10;
}
return result;
}
// Returns maximum and minimum
// possible sums of x1 and x2
// if digit replacements are allowed.
static void calculateMinMaxSum(int x1, int x2)
{
// We always get minimum sum if
// we replace 6 with 5.
int minSum = replaceDig(x1, 6, 5) +
replaceDig(x2, 6, 5);
// We always get maximum sum if
// we replace 5 with 6.
int maxSum = replaceDig(x1, 5, 6) +
replaceDig(x2, 5, 6);
Console.Write("Minimum sum = " + minSum);
Console.Write("\nMaximum sum = " + maxSum);
}
// Driver code
public static void Main ()
{
int x1 = 5466, x2 = 4555;
calculateMinMaxSum(x1, x2);
}
}
// This code is contributed by Nitin Mittal.
PHP
0)
{
$reminder = $x % 10;
// Required digit found,
// replace it
if ($reminder == $from)
$result = $result + $to *
$multiply;
else
$result = $result +
$reminder *
$multiply;
$multiply *= 10;
$x = $x / 10;
}
return $result;
}
// Returns maximum and minimum
// possible sums of x1 and x2
// if digit replacements are allowed.
function calculateMinMaxSum($x1, $x2)
{
// We always get minimum sum
// if we replace 6 with 5.
$minSum = replaceDig($x1, 6, 5) +
replaceDig($x2, 6, 5);
// We always get maximum sum
// if we replace 5 with 6.
$maxSum = replaceDig($x1, 5, 6) +
replaceDig($x2, 5, 6);
echo "Minimum sum = " , $minSum,"\n";
echo "Maximum sum = " , $maxSum;
}
// Driver code
$x1 = 5466; $x2 = 4555;
calculateMinMaxSum($x1, $x2);
// This code is contributed
// by nitin mittal.
?>
输出 :
Minimum sum = 10010
Maximum sum = 11132