Computer >> Máy Tính >  >> Lập trình >> C ++

Tổng tối đa và tối thiểu từ hai số có thay thế chữ số trong C ++

Chúng tôi được cung cấp với hai số dương num1 và num2. Mục đích là tìm tổng nhỏ nhất và tổng lớn nhất có thể có của hai số này sau khi thay thế chữ số trong cả hai. Chúng tôi được phép thay thế các chữ số từ mỗi số trong cả hai số. Giả sử num1 là 434 và num2 là 324 và chúng ta có thể thay chữ số 3 bằng 4 và số 4 bằng 3. Khi đó tổng nhỏ nhất sẽ là −333 + 323 =656 và tổng lớn nhất sẽ là 444 + 424 =864.

Hãy để chúng tôi hiểu với các ví dụ về thay thế chữ số 3 bằng 4 và ngược lại -

Đầu vào

num1=3224 num2=4321

Đầu ra

Maximum sum is : 8645
Minimum sum is : 6544

Giải thích - thay tất cả 3s bằng 4s để làm cho cả hai số lớn hơn là 4 lớn hơn 3.

num1 trở thành 4224 và num2 trở thành 4421 và tổng là 8645, đặt tất cả 4s với 3s để làm cho cả hai số nhỏ hơn vì 3 nhỏ hơn 4.

num1 trở thành 3223 và num2 trở thành 3321 và tổng là 6544

Đầu vào

num1=3111 num2=4111

Đầu ra

Maximum sum is : 8222
Minimum sum is : 6222

Giải thích - thay tất cả 3s bằng 4s để làm cho cả hai số lớn hơn là 4 lớn hơn 3.

num1 trở thành 4111 và num2 trở thành 4111 và tổng là 8222, đặt tất cả 4s với 3s để làm cho cả hai số nhỏ hơn 3 đều nhỏ hơn 4.

num1 trở thành 3111 và num2 trở thành 3111 và tổng là 6222

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Các số có trong các biến num1 và num2.

  • Hàm CalculSum (int n1, int n2) được sử dụng để tính tổng nhỏ nhất và lớn nhất của các số sau khi thay thế chữ số.

  • Nó nhận hai số n1 và n2 làm tham số và hiển thị kết quả được lưu trữ trong minSum và maxSum.

  • Lúc đầu, chúng tôi thay thế mỗi 4 ở cả hai số bằng 3 và lưu trữ các giá trị mới trong num2 và num2 bằng cách gọi thay thế (n1,4,3) và thay thế (n2,4,3) cho cả hai tương ứng.

  • Tính tổng tối thiểu bằng cách thêm num1 và num2 mới.

  • Tương tự, lặp lại các bước trên bằng cách gọi thay thế (n1,3,4) và thay thế (n2,3,4) để thay thế mọi thứ 3 bằng 4 và tính tổng lớn nhất.

  • Hàm thay thế (int x, int digit1, int digit2) thay thế mọi chữ số1 trong x bằng chữ số 2 và trả về số mới.

  • Số biến lưu trữ số mới thu được, được khởi tạo bằng 0.

  • tạm thời được sử dụng để lưu trữ hệ số nhân 10 cho mỗi lần lặp.

  • Chúng ta sẽ lấy từng chữ số từ bên tay phải bằng cách chia x cho 10 và lưu phần dư còn lại trong số dư.

  • Nếu số dư bằng chữ số1 thì thay bằng chữ số 2. Thêm điều này để có được số mới =number + digit2 * temp;

  • Nếu không, không có thay đổi number =number + rem * temp;

  • Giảm x bằng cách chia nó cho 10 và tăng số nhân lên 10. (remp =temp * 10)

  • Trả lại số đã lấy được.

Ví dụ

#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;
}

Đầu ra

Minimum Sum by digit replacement: 6262
Maximum Sum by digit replacement: 8282