我们给了两个正数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