เราได้ตัวเลขบวกสองตัว 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