কম্পিউটার

C++-এ B-বেসে N একটি সংখ্যা 1 দিয়ে শুরু হয় কিনা তা পরীক্ষা করুন


আমাদের একটি সংখ্যা N এবং একটি বেস b আছে। এই প্রোগ্রামে আমাদের পরীক্ষা করতে হবে যে সংখ্যাটি বেস b-এ 1 দিয়ে শুরু হচ্ছে কি না। ধরা যাক 6 নম্বর দেওয়া হল। বাইনারিতে এটি 110, তাই এটি 1 দিয়ে শুরু হয়, বেস 4-এও এটি 124 হবে। . এখানেও এটি 1 দিয়ে শুরু হয়।

আমরা জানি, যদি একটি সংখ্যা N কে বেস b-এ উপস্থাপন করা হয় তবে b m+1 বিট সিকোয়েন্সে রূপান্তরিত হয় bm bm-1 … b0। এটি bm বোঝায় b m + bm-1 * b m-1 + … + b0 *b 0 =N. বৃহত্তম সংখ্যা হবে 2*b m - 1. Nটি b m এ অবস্থিত ≤ N ≤ 2*b m - 1. এখন আরেকটি বিষয় লক্ষ্য করা যায় যে m $\lfloor\log_2 m\;\rfloor$ এর বেশি হতে পারে না কারণ আমরা যখন বেস-2-এ যেকোনো সংখ্যা উপস্থাপন করি তখন এটি শুধুমাত্র 0s এবং 1s এর ক্রমানুসারে রূপান্তরিত হয়, তাই এই ক্রমটির দৈর্ঘ্য সর্বদা অন্য যেকোন ভিত্তি উপস্থাপনের চেয়ে বেশি হবে এবং এর দৈর্ঘ্য হবে $\lfloor\log_2 m\;\rfloor+1$ এর সমান। সুতরাং একটি প্রদত্ত সংখ্যা পরীক্ষা করার জন্য N বেস b-এ 1 দিয়ে শুরু হয় বা না হয় আমরা m =1 থেকে m =$\lfloor\log_2 m\;\rfloor$ পর্যন্ত অতিক্রম করব এবং m-এর কোনও মানের জন্য N এর মধ্যে রয়েছে কিনা তা পরীক্ষা করব। ব্যাপ্তি b m ≤ N ≤ 2*b m - 1 বা না এবং সেই অনুযায়ী সত্য বা মিথ্যা ফেরত দিন।

উদাহরণ

#include <iostream>
#include <cmath>
using namespace std;
bool isStartWithOne(int number, int base) {
   int m = log2(number);
   for (int i = 1; i <= m; i++) {
      if (number >= pow(base, i) && number <= 2 * pow(base, i) - 1) //if number is in the given range
   return true;
   }
   return false;
}
int main() {
int num = 19, base = 16;
   if(isStartWithOne(num, base)){
      cout << "Can be represented";
   }else{
      cout << "Can not be represented";
   }
}

আউটপুট

Can be represented

  1. একটি সংখ্যা C++ এ অন্য একটি সংখ্যার শক্তি কিনা তা পরীক্ষা করুন

  2. একটি বড় সংখ্যা C++ এ 20 দ্বারা বিভাজ্য কিনা তা পরীক্ষা করুন

  3. C++ এ N একটি পঞ্চভুজ সংখ্যা কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম

  4. আর্মস্ট্রং নম্বর চেক করতে C++ প্রোগ্রাম