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
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP