Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ผลรวมสูงสุดและต่ำสุดจากตัวเลขสองตัวพร้อมการแทนที่หลักใน C++


เราได้ตัวเลขบวกสองตัว num1 และ num2 เป้าหมายคือการหาผลรวมขั้นต่ำและผลรวมสูงสุดที่เป็นไปได้ของสองตัวนี้หลังจากการแทนที่ตัวเลขในทั้งสองตัว เราได้รับอนุญาตให้แทนที่ตัวเลขจากแต่ละตัวเลขในทั้งสองตัวเลข สมมติว่า num1 คือ 434 และnum2 คือ 324 และเราสามารถแทนที่หลัก 3 ด้วย 4 และ digic 4 ด้วย 3 จากนั้นผลรวมขั้นต่ำจะเป็น −333+323=656 และผลรวมสูงสุดจะเป็น 444+424=864

ให้เราเข้าใจด้วยตัวอย่างการแทนที่หลัก 3 ด้วย 4 และในทางกลับกัน -

อินพุต

num1=3224 num2=4321

ผลลัพธ์

Maximum sum is : 8645
Minimum sum is : 6544

คำอธิบาย − แทนที่ 3s ทั้งหมดด้วย 4s เพื่อทำให้ตัวเลขทั้งสองมีขนาดใหญ่ขึ้นเนื่องจาก 4 มากกว่า 3

num1 กลายเป็น 4224 และ num2 กลายเป็น 4421 และผลรวมคือ 8645 แทนที่ 4s ทั้งหมดด้วย 3s เพื่อทำให้ตัวเลขทั้งสองมีขนาดเล็กลงเนื่องจาก 3 น้อยกว่า 4

num1 กลายเป็น 3223 และ num2 กลายเป็น 3321 และผลรวมคือ 6544

อินพุต

num1=3111 num2=4111

ผลลัพธ์

Maximum sum is : 8222
Minimum sum is : 6222

คำอธิบาย − แทนที่ 3s ทั้งหมดด้วย 4s เพื่อทำให้ตัวเลขทั้งสองมีขนาดใหญ่ขึ้นเนื่องจาก 4 มากกว่า 3

num1 กลายเป็น 4111 และ num2 กลายเป็น 4111 และผลรวมคือ 8222 แทนที่ 4s ทั้งหมดด้วย 3s เพื่อทำให้ตัวเลขทั้งสองมีขนาดเล็กลงเนื่องจาก 3 น้อยกว่า 4

num1 กลายเป็น 3111 และ num2 กลายเป็น 3111 และผลรวมคือ 6222

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

  • ตัวเลขมีอยู่ในตัวแปร num1 และ num2

  • ฟังก์ชันคำนวณผลรวม ( int n1,int n2) ใช้ในการคำนวณผลรวมต่ำสุดและสูงสุดของตัวเลขหลังการแทนที่ตัวเลข

  • ใช้ตัวเลขสองตัว n1 และ n2 เป็นพารามิเตอร์และแสดงผลที่เก็บไว้ใน minSum และ maxSum

  • ในตอนแรก เราจะแทนที่ทุกๆ 4 ในตัวเลขทั้งสองด้วย 3 และเก็บค่าใหม่ใน num2 และ num2 โดยการเรียก replace(n1,4,3) และแทนที่ (n2,4,3) สำหรับทั้งคู่ตามลำดับ

  • คำนวณผลรวมขั้นต่ำโดยเพิ่ม num1 และ num2 ใหม่

  • ทำซ้ำขั้นตอนข้างต้นในทำนองเดียวกันโดยเรียกแทนที่ (n1,3,4) และแทนที่ (n2,3,4) เพื่อแทนที่ทุกๆ 3 ต่อ 4 และคำนวณผลรวมสูงสุด

  • ฟังก์ชัน replace(int x,int digit1,int digit2) แทนที่ทุกๆ digit1 ใน x ด้วย digit2 และส่งคืนหมายเลขใหม่

  • ตัวเลขตัวแปรเก็บตัวเลขที่ได้รับใหม่ โดยเริ่มต้นด้วย 0

  • temp ใช้เพื่อเก็บตัวคูณด้วย 10 สำหรับการวนซ้ำแต่ละครั้ง

  • เราจะนำแต่ละหลักจากทางขวามือโดยหาร x ด้วย 10 และเก็บเศษที่เหลือไว้ในหน่วย rem

  • ถ้า rem เท่ากับ digit1 ให้แทนที่ด้วย digit2 เพิ่มสิ่งนี้เพื่อรับหมายเลขใหม่ =หมายเลข +digit2 * temp;

  • มิฉะนั้นจะไม่มีการเปลี่ยนแปลง number=number + rem*temp;

  • ลด x โดยหารด้วย 10 และเพิ่มตัวคูณด้วย 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