এই টিউটোরিয়ালে, আমরা একটি প্রোগ্রাম লিখতে যাচ্ছি যেটি প্রদত্ত বড় সংখ্যাটি 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
উপসংহার
টিউটোরিয়ালে আপনার কোন প্রশ্ন থাকলে মন্তব্য বিভাগে উল্লেখ করুন।