Максимальная и минимальная суммы из двух чисел с заменой цифр
Учитывая два положительных числа, вычислите минимальную и максимальную возможные суммы двух чисел. Нам разрешено заменять цифру 5 цифрой 6 и наоборот в одном или обоих указанных числах.
Примеры :
Ввод: x1 = 645 x2 = 666. Выход: Минимальная сумма: 1100 (545 + 555) Максимальная сумма: 1312 (646 + 666) Ввод: x1 = 5466 x2 = 4555 Выход: Минимальная сумма: 10010 Максимальная сумма: 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++
// 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 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( "
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 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( "
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 code var 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 и многому другому, см. Полный курс подготовки к собеседованию .