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