কম্পিউটার

C++ প্রোগ্রামে বড় সংখ্যার জন্য 37 দ্বারা বিভাজ্য


এই টিউটোরিয়ালে, আমরা একটি প্রোগ্রাম লিখতে যাচ্ছি যেটি প্রদত্ত বড় সংখ্যাটি 37 দ্বারা বিভাজ্য কিনা তা পরীক্ষা করে।

আমরা এখানে গণিতের সামান্য বিট ব্যবহার করতে যাচ্ছি। আসুন সমস্যা সমাধানের পদক্ষেপগুলি দেখি৷

  • নম্বরটি শুরু করুন৷

  • যদি প্রদত্ত সংখ্যাটির দৈর্ঘ্য 3 দ্বারা বিভাজ্য না হয়, তাহলে সংখ্যাটির শুরুতে শূন্য যোগ করুন যাতে দৈর্ঘ্যটি 3 দ্বারা বিভাজ্য হয়৷

  • সংখ্যাটিকে 3 সংখ্যার গ্রুপে ভাগ করুন এবং তাদের যোগ করুন।

  • যদি ফলাফলের যোগফল 37 দ্বারা বিভাজ্য হয়, তাহলে প্রদত্ত সংখ্যাটি 37 দ্বারা বিভাজ্য।

  • ফলাফল যোগফল যদি 4 সংখ্যার সংখ্যা হয়, তাহলে 2 থেকে ধাপগুলি পুনরাবৃত্তি করুন।

  • প্রদত্ত সংখ্যাটি 37 দ্বারা বিভাজ্য কিনা তা মুদ্রণ করুন৷

উদাহরণ

আসুন কোডটি দেখি।

#include <bits/stdc++.h>
using namespace std;
bool isNumberDivisibleBy37(string number, int n) {
   if (number == "0") {
      return 0;
   }
   if (n % 3 == 1){
      number = "00"+ number;
      n += 2;
   }
   else if (n % 3 == 2){
      number = "0"+ number;
      n += 1;
   }
   int groups_sum = 0;
   while (n != 0){
      string group = number.substr(n - 3, n);
      int group_value = (group[0] - '0') * 100 + (group[1] - '0') * 10 + (group[2] - '0') * 1;
      groups_sum += group_value;
      n = n - 3;
   }
   if (groups_sum >= 1000) {
      string new_number = to_string(groups_sum);
      return isNumberDivisibleBy37(new_number, new_number.length());
   }
   else {
      return groups_sum % 37 == 0;
   }
}
int main() {
   string number = "4048675309";
   if (isNumberDivisibleBy37(number, 10)) {
      cout << "Yes" << endl;
   }
   else {
      cout << "No" << endl;
   }
   return 0;
}

আউটপুট

আপনি যদি উপরের কোডটি চালান, তাহলে আপনি নিম্নলিখিত ফলাফল পাবেন।

Yes

উপসংহার

টিউটোরিয়ালে আপনার কোন প্রশ্ন থাকলে মন্তব্য বিভাগে উল্লেখ করুন।


  1. C++ এ কেন্দ্রীভূত অনাভুজ সংখ্যার জন্য প্রোগ্রাম

  2. হেক্সাডেসিমেল থেকে দশমিকের জন্য C++ প্রোগ্রাম

  3. C++ এ দশমিক থেকে হেক্সাডেসিমেল রূপান্তরের জন্য প্রোগ্রাম

  4. C++ এ দশমিক থেকে বাইনারি রূপান্তরের জন্য প্রোগ্রাম