আমাদের একটি বড় সংখ্যা দেওয়া আছে। লক্ষ্য হলো এই সংখ্যার রোটেশন (rotation) গুলোর মধ্যে ৪ দিয়ে বিভাজ্য কতটি আছে তা বের করা।
রোটেশন বারবার করা যাবে না, তাই আমরা ৪ দিয়ে বিভাজ্যতার নিয়ম ব্যবহার করব: শেষ দুই ডিজিট যদি ৪ দিয়ে বিভাজ্য হয়, তবে পুরো সংখ্যও ৪ দিয়ে বিভাজ্য। উদাহরণস্বরূপ, ১২৩৪ এর রোটেশন গুলো: ১২৩৪, ৪১২৩, ৩৪১২, ২৩৪১। এর মধ্যে ৩৪১২, ৪ দিয়ে বিভাজ্য কারণ শেষ দুটি ডিজিট ১২, ৪ দিয়ে বিভাজ্য।
উদাহরণ দিয়ে বুঝি
ইনপুট − num=15324
আউটপুট − ৪ দিয়ে বিভাজ্য রোটেশন সংখ্যা: ২
ব্যাখ্যা − রোটেশন গুলো: ১৫৩২৪, ৪১৫৩২, ২৪১৫৩, ৩২৪১৫, ৫৩২৪১। এর মধ্যে ১৫৩২৪ এবং ৪১৫৩২, ৪ দিয়ে বিভাজ্য।
ইনপুট − num=848484
আউটপুট − ৪ দিয়ে বিভাজ্য রোটেশন সংখ্যা: ৬
ব্যাখ্যা − রোটেশন গুলো: ৮৪৮৪৮৪, ৪৮৪৮৪৮, ৮৪৮৪৮৪, ৪৮৪৮৪৮, ৮৪৮৪৮৪, ৪৮৪৮৪৮। সব রোটেশন ৪ দিয়ে বিভাজ্য।
প্রোগ্রামে ব্যবহৃত পদ্ধতি
সংখ্যাকে স্ট্রিং-এ কনভার্ট করে লুপ দিয়ে ঘুরব। প্রতিটি দুই ডিজিটের জোড়াকে ইন্টিজারে কনভার্ট করে ৪ দিয়ে বিভাজ্যতা চেক করব। বিভাজ্য হলে কাউন্ট বাড়াব।
- সংখ্যা
long long numহিসেবে নিন। Rotation_4(long long num)ফাংশন সংখ্যা নিয়ে ৪ দিয়ে বিভাজ্য রোটেশন কাউন্ট রিটার্ন করে।- স্ট্রিং-এ কনভার্ট করুন:
str = to_string(num)। - ডিজিট সংখ্যা:
length = str.length()। - দুই ডিজিটের ইন্টিজার মান রাখার জন্য
digit=0, কাউন্টের জন্যcount=0। - যদি
length == 1: একক ডিজিটকে ইন্টিজারে কনভার্ট করে ৪ দিয়ে বিভাজ্যতা চেক করুন, ১ বা ০ রিটার্ন করুন। i=0থেকেlength-1পর্যন্ত লুপে দুই ক্যারেক্টারকে ইন্টিজারে কনভার্ট করুন:digit = (str[i]-'0')*10 + (str[i+1]-'0')। প্রতিটি জোড়া রোটেশনে শেষ দুটি ডিজিট হয়। ৪ দিয়ে বিভাজ্য হলে কাউন্ট বাড়ান।- শেষ ডিজিট এবং প্রথম ডিজিট দিয়ে বানানো জোড়াও চেক করুন।
- শেষে
countরিটার্ন করুন।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int Rotation_4(long long num) {
string str = to_string(num);
int length = str.length();
int digit = 0, count = 0;
if (length == 1) {
digit = (str.at(0) - '0');
if (digit % 4 == 0) return 1;
else return 0;
}
for (int i = 0; i < (length - 1); i++) {
digit = (str.at(i) - '0') * 10 + (str.at(i + 1) - '0');
if (digit % 4 == 0) count++;
}
digit = (str.at(length - 1) - '0') * 10 + (str.at(0) - '0');
if (digit % 4 == 0) count++;
return count;
}
int main() {
long long num = 24040;
cout << "Count of rotations divisible by 4 are: " << Rotation_4(num);
return 0;
}
আউটপুট
Count of rotations divisible by 4 are: 4