কম্পিউটার

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


স্টেটমেন্ট - প্রদত্ত ওজন ব্যবহার করে ব্যালেন্স প্যানগুলি যা একটি সংখ্যার শক্তি।

বর্ণনা - এই সমস্যায় আমাদের একটি প্যান ভিত্তিক ওজনের মেশিন দেওয়া হয়েছে। আমাদের একটি ওজন T এবং কিছু অন্যান্য ওজন দেওয়া হয়েছে যার মানগুলি হল একটি সংখ্যার শক্তি a৷ আমাদের প্রদত্ত ওজন ব্যবহার করে প্যানগুলির ভারসাম্য বজায় রাখতে হবে।

এখন, এর উপর ভিত্তি করে আমাদের এই সমীকরণ আছে,

T + (a এর কিছু শক্তি) =(a এর কিছু শক্তি)

এখন, আমাদের মনে রাখা উচিত যে একটি পাওয়ার মানের সাথে সামঞ্জস্যপূর্ণ একটি ওজন আছে।

উদাহরণ,

T = 12 : a = 4

নীচের মানগুলি ব্যবহার করে, আমরা ওজনগুলিকে এইভাবে ভারসাম্য রাখতে পারি,

12 + 4 = 16

এখন, আমরা এই সমস্যাটি সমাধান করব আমাদের a-এর শক্তিতে T উপস্থাপন করতে হবে। এর জন্য আমরা বেস 10

থেকে T-এর বেস পরিবর্তন করব

কেস 1 - ভিত্তি পরিবর্তন করার সময়, যদি উপস্থাপনার মানটিতে শুধুমাত্র 1 এবং 0 থাকে। তারপর 1 এর ওজনগুলিকে যোগ করে T এর মান তৈরি করতে ব্যবহার করা যেতে পারে।

একটি উদাহরণ নেওয়া যাক,

T = 10 : a = 3,

10 থেকে 3 এর ভিত্তি পরিবর্তন করলে মান 101 হয়ে যায়।

তাই উইলটি 3 0 ব্যবহার করে তৈরি করা হবে এবং 3 2 (1 + 9) =10।

কেস 2 − বেস পরিবর্তন করার সময়, যদি উপস্থাপনাটির শুধুমাত্র 1 এবং 0's ব্যতীত অন্য মান থাকে, তাহলে ভারসাম্য বজায় রাখার জন্য আরও কিছু অপারেশন করতে হবে। এখানে, সমাধানের জন্য বাধ্যতামূলক শর্ত হল বেস রূপান্তরের ডিজিট মান (a - 1) হওয়া উচিত। এই ক্ষেত্রে, আমরা T's dide-এ মানের পাওয়ার স্থানান্তর করব। এবং ভিত্তি প্রতিনিধিত্বের সংখ্যা 1 দ্বারা বৃদ্ধি করুন।

একটি উদাহরণ নেওয়া যাক,

T = 7 : a = 3

7 থেকে 3 এর বেস পরিবর্তন করলে আমরা 021 পাব।

3 1 স্থানান্তর করা হচ্ছে T-এর দিকে এবং অন্য দিকে 1 দ্বারা বৃদ্ধি করছি। আমরা সংখ্যা =10 পাই যা 101 হিসাবে উপস্থাপন করা হয় অর্থাৎ (9 + 1)। যা ভারসাম্যপূর্ণ হতে পারে।

উপরের ক্ষেত্রের উপর ভিত্তি করে আমরা এই সমস্যাটি সমাধান করার জন্য একটি প্রোগ্রাম তৈরি করব।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
bool isBalancePossible(int T, int a){
   vector<int> baseForm;
   while (T) {
      baseForm.push_back(T % a);
      T /= a;
   }
   baseForm.push_back(0);
   for (int i = 0; i < baseForm.size(); i++) {
      if (baseForm[i] != 0 && baseForm[i] != 1 &&
      baseForm[i] != (a - 1) && baseForm[i] != a)
      return false;
   if (baseForm[i] == a || baseForm[i] == (a - 1))
      baseForm[i + 1] += 1;
   }
   return true;
}
int main(){
   int T = 21;
   int a = 4;
   if (isBalancePossible(T, a))
      cout << "Balance is possible" << endl;
   else
      cout << "Balance is not possible" << endl;
   return 0;
}

আউটপুট

Balance is possible

  1. স্ট্যাক ব্যবহার করে একটি দশমিক সংখ্যাকে বাইনারি নম্বরে রূপান্তর করতে C++ প্রোগ্রাম

  2. একটি প্রদত্ত সংখ্যার সংখ্যা যোগ করার জন্য C++ প্রোগ্রাম

  3. রিকার্সন ব্যবহার করে একটি সংখ্যার ফ্যাক্টরিয়াল খুঁজে বের করার জন্য C++ প্রোগ্রাম

  4. পুনরাবৃত্তি ব্যবহার করে একটি সংখ্যার ফ্যাক্টরিয়াল খুঁজে বের করতে C++ প্রোগ্রাম