কম্পিউটার

C++ এ সংখ্যা প্রতিস্থাপন সহ দুটি সংখ্যা থেকে সর্বাধিক এবং সর্বনিম্ন যোগফল


আমাদের দুটি ধনাত্মক সংখ্যা num1 এবং num2 দেওয়া হয়েছে। লক্ষ্য হল তাদের উভয়ের মধ্যে একটি সংখ্যা প্রতিস্থাপনের পরে এই দুটির সর্বনিম্ন যোগফল এবং সর্বাধিক যোগফল খুঁজে বের করা। আমরা উভয় সংখ্যার প্রতিটি সংখ্যা থেকে সংখ্যা প্রতিস্থাপন করার অনুমতি দেওয়া হয়. ধরুন num1 হল 434 এবং num2 হল 324 এবং আমরা ডিজিট 3 কে 4 দিয়ে এবং ডিজিক 4 কে 3 দিয়ে প্রতিস্থাপন করতে পারি। তাহলে ন্যূনতম যোগফল হবে −333+323=656 এবং সর্বোচ্চ যোগফল হবে 444+424=864।

4 এর সাথে ডিজিট প্রতিস্থাপন 3 এবং তদ্বিপরীত −

এর উদাহরণ দিয়ে বোঝা যাক

ইনপুট

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 সমস্ত 4 গুলিকে 3s দিয়ে প্রতিস্থাপন করে উভয় সংখ্যাকে ছোট করা হবে কারণ 3টি 4 থেকে ছোট৷

num1 হল 3111 এবং num2 হল 3111 এবং যোগফল হল 6222

নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • সংখ্যাগুলি num1 এবং num2 ভেরিয়েবলে উপস্থিত রয়েছে৷

  • ফাংশন calculateSum ( int n1, int n2) অঙ্ক প্রতিস্থাপনের পরে সংখ্যার সর্বনিম্ন এবং সর্বাধিক যোগফল গণনা করতে ব্যবহৃত হয়৷

  • এটি প্যারামিটার হিসাবে দুটি সংখ্যা n1 এবং n2 নেয় এবং minSum এবং maxSum-এ সংরক্ষিত ফলাফল প্রদর্শন করে৷

  • প্রথমে আমরা উভয় সংখ্যায় প্রতি 4টিকে 3 দ্বারা প্রতিস্থাপন করি এবং যথাক্রমে উভয়ের জন্য replace(n1,4,3) এবং প্রতিস্থাপন (n2,4,3) কল করে num2 এবং num2 তে নতুন মান সঞ্চয় করি।

  • নতুন num1 এবং num2 যোগ করে সর্বনিম্ন যোগফল গণনা করুন।

  • একইভাবে প্রতি 3 বাই 4 প্রতিস্থাপনের জন্য প্রতিস্থাপন (n1,3,4) এবং প্রতিস্থাপন (n2,3,4) কল করে উপরের ধাপগুলি পুনরাবৃত্তি করুন এবং সর্বাধিক যোগফল গণনা করুন৷

  • প্রতিস্থাপন ফাংশন (int x,int digit1,int digit2) x-এ প্রতিটি digit1-কে digit2 দ্বারা প্রতিস্থাপন করে এবং নতুন সংখ্যা প্রদান করে।

  • পরিবর্তনশীল সংখ্যা নতুন প্রাপ্ত সংখ্যা সংরক্ষণ করে, 0 দিয়ে শুরু করা হয়।

  • প্রতিটি পুনরাবৃত্তির জন্য 10 দ্বারা গুণক সংরক্ষণ করতে temp ব্যবহার করা হয়।

  • আমরা x কে 10 দিয়ে ভাগ করে ডান হাত থেকে প্রতিটি অঙ্ক নেব এবং অবশিষ্টাংশকে রেমে সংরক্ষণ করব।

  • 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

  1. ন্যূনতম সংখ্যা যা N এর থেকে ছোট বা সমান এবং C++ এ যোগফল S সহ

  2. C++ এ একটি অ্যারের অঙ্ক থেকে গঠিত দুটি সংখ্যার ন্যূনতম যোগফল

  3. সর্বাধিক আকার 2 এর সর্বনিম্ন পার্টিশন এবং C++ এ প্রদত্ত মান দ্বারা সীমিত যোগফল

  4. C++ প্রোগ্রাম যোগফল এবং গুণফল উভয়ই N এর মতো একই সহ দুটি সংখ্যা খুঁজে বের করতে