두 개의 양수 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
설명 - 4가 3보다 크므로 두 숫자를 모두 더 크게 만들기 위해 모든 3을 4로 대체합니다.
num1은 4224가 되고 num2는 4421이 되고 sum은 8645입니다. 3이 4보다 작으므로 두 숫자를 모두 더 작게 만들기 위해 4를 모두 3으로 교체합니다.
num1은 3223이 되고 num2는 3321이 되고 합계는 6544가 됩니다.
입력
num1=3111 num2=4111
출력
Maximum sum is : 8222 Minimum sum is : 6222
설명 - 4가 3보다 크므로 두 숫자를 모두 더 크게 만들기 위해 모든 3을 4로 대체합니다.
num1은 4111이 되고 num2는 4111이 되고 sum은 8222입니다. 3이 4보다 작으므로 두 숫자를 모두 더 작게 만들기 위해 4를 모두 3으로 교체합니다.
num1은 3111이 되고 num2는 3111이 되고 합계는 6222가 됩니다.
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
-
숫자는 변수 num1 및 num2에 있습니다.
-
countSum 함수( int n1,int n2)는 숫자 교체 후 숫자의 최소 및 최대 합을 계산하는 데 사용됩니다.
-
두 개의 숫자 n1과 n2를 매개변수로 받아 minSum과 maxSum에 저장된 결과를 표시합니다.
-
처음에는 두 숫자의 모든 4를 3으로 바꾸고 각각에 대해 replace(n1,4,3) 및 replace(n2,4,3)를 호출하여 num2와 num2에 새 값을 저장합니다.
-
새로운 num1과 num2를 추가하여 최소 합계를 계산합니다.
-
마찬가지로 3을 4로 바꾸기 위해 replace(n1,3,4) 및 replace(n2,3,4)를 호출하여 위의 단계를 반복하고 최대 합계를 계산합니다.
-
replace(int x,int digit1,int digit2) 함수는 x의 모든 digit1을 digit2로 바꾸고 새 숫자를 반환합니다.
-
변수 숫자는 새로 얻은 숫자를 저장하며 0으로 초기화됩니다.
-
temp는 각 반복에 대해 승수를 10으로 저장하는 데 사용됩니다.
-
x를 10으로 나누고 나머지의 나머지를 rem에 저장하여 오른쪽에서 각 숫자를 가져옵니다.
-
rem이 digit1과 같으면 digit2로 바꿉니다. 새로운 숫자를 얻으려면 이것을 추가하십시오 =number +digit2 * temp;
-
그렇지 않으면 변경 없음 number=number + rem*temp;
-
x를 10으로 나누어 x를 줄이고 승수를 10으로 늘립니다. (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