C ++中带有数字替换的两个数字的最大和最小和

我们给了两个正数num1和num2。目标是在两个数字都替换为数字后找到这两个数字的最小和最大和。我们被允许在两个数字中替换每个数字中的数字。假设num1为434,num2为324,我们可以将数字3替换为4,将数字4替换为3。那么最小和为-333 + 323 = 656,最大和为444 + 424 = 864。

让我们以数字替换3的示例来理解3,反之亦然-

输入值

num1=3224 num2=4321

输出结果

Maximum sum is : 8645
Minimum sum is : 6544

解释-用4替换所有3,使两个数字都大,因为4大于3。

num1变为4224,num2变为4421,总和为8645,将所有4替换为3,使两个数字都较小,因为3小于4。

num1变为3223,num2变为3321,总和为6544

输入值

num1=3111 num2=4111

输出结果

Maximum sum is : 8222
Minimum sum is : 6222

解释-用4替换所有3,使两个数字都大,因为4大于3。

num1变为4111,num2变为4111,sum为8222,将所有4s替换为3s,以使两个数字都较小,因为3小于4。

num1变为3111,num2变为3111,总和为6222

以下程序中使用的方法如下

  • 数字存在于变量num1和num2中。

  • 函数calculateSum(int n1,int n2)用于计算数字替换后的最小和最大数字总和。

  • 它使用两个数字n1和n2作为参数,并显示存储在minSum和maxSum中的结果。

  • 首先,我们将两个数字中的每4个都替换为3,并分别通过分别调用replace(n1,4,3)和replace(n2,4,3)将新值存储在num2和num2中。

  • 通过添加新的num1和num2计算最小总和。

  • 类似地,通过调用replace(n1,3,4)和replace(n2,3,4)来重复上述步骤以将每3个乘以4并计算最大和。

  • 函数replace(int x,int digit1,int digit2)用数字2替换x中的每个数字1并返回新数字。

  • 变量编号存储新获得的编号,并以0初始化。

  • temp用于为每次迭代存储乘数10。

  • 通过将x除以10并将余数存储在rem中,我们将从右手获得每个数字。

  • 如果rem等于digit1,则将其替换为digit2。将其相加以获得新的数字=数字+数字2 * temp;

  • 否则,不变号=数字+ rem * temp;

  • 通过将x除以10来减少x,并将乘数增加10。(remp = temp * 10)

  • 返回获得的号码。

示例

#include<bits/stdc++.h>
using namespace std;
//用digit2替换digit1-
int replace(int x, int digit1, int digit2){
   int number = 0;
   int temp = 1;
   while (x > 0){
      int rem = x % 10;
      //找到所需的数字,将其替换
      if (rem == digit1)
         number = number + digit2 * temp;
      else
         number = number + rem * temp;
         temp *= 10;
         x = x / 10;
      }
      return number;
   }
   void calculateSum(int n1, int n2){
      //用3代替4-
      int num1=replace(n1,4,3);
      int num2=replace(n2,4,3);
      int minSum=num1+num2;
      //用3代替3-
      num1=replace(n1,3,4);
      num2=replace(n2,3,4);
      int maxSum=num1+num2;
      std::cout << "Minimum Sum by digit replacement: " << minSum;
      std::cout << "\nMaximum Sum by digit replacement: " << maxSum;
}
int main(){
   int num1 = 3131, num2 = 4141;
   calculateSum(num1, num2);
   return 0;
}

输出结果

Minimum Sum by digit replacement: 6262
Maximum Sum by digit replacement: 8282