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


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

让我们通过示例了解数字替换 3 为 4,反之亦然 -

输入

num1=3224 num2=4321

输出

Maximum sum is : 8645
Minimum sum is : 6544

解释 - 将所有 3 替换为 4 以使两个数字都更大,因为 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

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

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

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

下面程序中使用的方案如下

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

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

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

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

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

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

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

  • 变量 number 存储新获得的数字,初始化为 0。

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

  • 我们将通过将 x 除以 10 并将余数存储在 rem 中的 remainder 中来从右侧获取每个数字。

  • 如果 rem 等于 digit1,则将其替换为 digit2。将其添加到获得新数字 = number + digit2 * temp;

  • 否则没有变化 number=number + rem*temp;

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

  • 返回获得的数字。

示例

 实时演示

#include<bits/stdc++.h>
using namespace std;
//replace digit1 with digit2
int replace(int x, int digit1, int digit2){
   int number = 0;
   int temp = 1;
   while (x > 0){
      int rem = x % 10;
      // Required digit found, replace it
      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){
      //replace 4 by 3
      int num1=replace(n1,4,3);
      int num2=replace(n2,4,3);
      int minSum=num1+num2;
      //replace 3 by 4
      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

更新于: 2020-07-28

274 次查看

开启您的 职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.