কম্পিউটার

C++ এ প্রদত্ত ক্রিয়াকলাপ সম্পাদন করে একটি সংখ্যাকে 1 এ হ্রাস করুন


ইনপুট হিসাবে একটি পূর্ণসংখ্যা সংখ্যা দেওয়া হয়েছে। লক্ষ্য হল ইনপুট সংখ্যা 1 এ কমাতে প্রয়োজনীয় পদক্ষেপ বা অপারেশনের ন্যূনতম সংখ্যা খুঁজে পাওয়া।

  • যদি সংখ্যাটি জোড় হয়, তাহলে এটিকে 2 দ্বারা ভাগ করুন।

  • যদি সংখ্যাটি বিজোড় হয়, তাহলে এটি 1 দ্বারা বৃদ্ধি বা হ্রাস করুন।

উদাহরণ

ইনপুট − সংখ্যা=২৮

আউটপুট − 28 থেকে 1:6 কমানোর সর্বনিম্ন পদক্ষেপ

ব্যাখ্যা

28 হল জোড় - 2 =14 দিয়ে ভাগ করুন

14 হল জোড় - 2 =7 দিয়ে ভাগ করুন

7 বিজোড় - 1 =8 দ্বারা বৃদ্ধি

8 হল জোড় - 2 =4 দিয়ে ভাগ করুন

4 হল জোড় - 2 =2 দ্বারা ভাগ করুন

2 হল জোড় - 2 =1

দিয়ে ভাগ করুন

ইনপুট - সংখ্যা=9

আউটপুট − 9 থেকে 1 কমাতে সর্বনিম্ন পদক্ষেপ:4

ব্যাখ্যা

9 হল বিজোড় - 1 =8 দ্বারা হ্রাস

8 হল জোড় - 2 =4 দিয়ে ভাগ করুন

4 হল জোড় - 2 =2 দ্বারা ভাগ করুন

2 হল জোড় - 2 =1

দিয়ে ভাগ করুন

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

এই পদ্ধতিতে সংখ্যা 1 এ কমাতে প্রয়োজনীয় ন্যূনতম ক্রিয়াকলাপগুলি পরীক্ষা করার জন্য একটি পুনরাবৃত্ত পদ্ধতি ব্যবহার করুন। যদি এটি এমনকি 2 দ্বারা ভাগ করা হয় তবে নম্বর+1 বা নম্বর-1-এর জন্য ন্যূনতম উপায়গুলির জন্য পুনরাবৃত্তিমূলকভাবে চেক করুন, যেটি কম।

  • পূর্ণসংখ্যা হিসাবে ইনপুট নম্বর নিন।

  • ফাংশন minWays(int num) num কে ইনপুট হিসাবে নেয় এবং num 1 এ কমাতে প্রয়োজনীয় ন্যূনতম অপারেশনের গণনা প্রদান করে।

  • পূর্ণসংখ্যা হিসাবে tmp1, tmp2 এবং min ভেরিয়েবল নিন।

  • যদি সংখ্যা 0 হয় তবে 1 ফেরত দিন।

  • যদি num%2==0 হয়, তাহলে সেটা num=num/2

    সেট করুন
  • সংখ্যা বিজোড় হলে tmp1=minWays(num-1) এবং tmp2=minWays(num+1) সেট করুন।

  • সেট মিন হল ন্যূনতম tmp1 এবং tmp2।

  • 1+মিনিট রিটার্ন করুন।

  • শেষে আমরা কাঙ্খিত ফলাফল পাব।

  • প্রধান ফলাফল প্রিন্ট করুন.

উদাহরণ

#include <iostream>
using namespace std;
int minWays(int num){
   int tmp1,tmp2,min;
   if (num == 1){
      return 0;
   }
   else if (num % 2 == 0){
      tmp1=minWays(num/2);
      return (1 + tmp1);
   }
   else{
      int tmp1=minWays(num - 1);
      int tmp2=minWays(num + 1);
      int min=tmp1<tmp2?tmp1:tmp2;
      return (1 + min);
   }
}
int main(){
   int Number = 21;
   cout <<"Minimum steps to reduce "<<Number<<" to 1: "<<minWays(Number);
   return 0;
}

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট তৈরি করবে

Minimum steps to reduce 21 to 1: 6

  1. একটি প্রদত্ত নম্বর C++ এ Pronic কিনা তা পরীক্ষা করুন

  2. একটি প্রদত্ত মোবাইল নম্বর C++ এ অভিনব কিনা তা পরীক্ষা করুন

  3. একটি সংখ্যা প্রদত্ত বেসে আছে নাকি C++ তে নেই তা পরীক্ষা করুন

  4. একটি প্রদত্ত সংখ্যা C++ তে স্পার্স বা না তা পরীক্ষা করুন