Максимальная и минимальная суммы из двух чисел с заменой цифр
Учитывая два положительных числа, вычислите минимальную и максимальную возможные суммы двух чисел. Нам разрешено заменять цифру 5 цифрой 6 и наоборот в одном или обоих указанных числах.
Примеры :
Ввод: x1 = 645 x2 = 666.
Выход: Минимальная сумма: 1100 (545 + 555)
Максимальная сумма: 1312 (646 + 666)
Ввод: x1 = 5466 x2 = 4555
Выход: Минимальная сумма: 10010
Максимальная сумма: 11132Since 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++
// 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<bits/stdc++.h>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 codeint 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("
Maximum 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 codeif __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("
Maximum sum = " + maxSum); } // Driver code public static void Main () { int x1 = 5466, x2 = 4555; calculateMinMaxSum(x1, x2); }}// This code is contributed by Nitin Mittal. |
PHP
<?php// PHP 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"function replaceDig($x, $from, $to){ $result = 0; $multiply = 1; while ($x > 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,"
"; echo "Maximum sum = " , $maxSum;}// Driver code$x1 = 5466; $x2 = 4555;calculateMinMaxSum($x1, $x2);// This code is contributed// by nitin mittal.?> |
Javascript
<script>// Javascript 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"function replaceDig(x , from , to){ var result = 0; var multiply = 1; while (x > 0) { var reminder = x % 10; // Required digit found, replace it if (reminder == from) result = result + to * multiply; else result = result + reminder * multiply; multiply *= 10; x = parseInt(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. var minSum = replaceDig(x1, 6, 5) + replaceDig(x2, 6, 5); // We always get maximum sum if we replace // 5 with 6. var maxSum = replaceDig(x1, 5, 6) + replaceDig(x2, 5, 6); document.write("Minimum sum = " + minSum); document.write("<br>Maximum sum = " + maxSum);}// Driver codevar x1 = 5466, x2 = 4555;calculateMinMaxSum(x1, x2);// This code contributed by shikhasingrajput</script> |
Выход :
Минимальная сумма = 10010 Максимальная сумма = 11132
Автор статьи: Рошни Агарвал . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью, используя write.geeksforgeeks.org, или отправить свою статью по электронной почте: deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.
Вниманию читателя! Не прекращайте учиться сейчас. Получите все важные математические концепции для соревновательного программирования с курсом Essential Maths for CP по доступной для студентов цене. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .