আমাদের একটি সংখ্যা N দেওয়া আছে। লক্ষ্য হলো N-এর রোটেশন গুলোর মধ্যে কতগুলো বিজোড় (odd) এবং কতগুলো জোড় (even) সংখ্যা তৈরি হয়। যদি N = ১২৩ হয়, তবে এর রোটেশন গুলো: ১২৩, ৩২১, ১৩২। বিজোড় রোটেশন: ১২৩ এবং ৩২১ (২টি), জোড় রোটেশন: ১৩২ (১টি)।
উদাহরণ দিয়ে বুঝি
ইনপুট − N = 54762
আউটপুট −
N-এর বিজোড় রোটেশন সংখ্যা: ২
N-এর জোড় রোটেশন সংখ্যা: ৩
ব্যাখ্যা − রোটেশন গুলো: ৫৪৭৬২, ২৫৪৭৬, ৬২৫৪৭, ৭৬২৫৪, ৪৭৬২৫।
জোড় রোটেশন ৩টি: ৫৪৭৬২, ২৫৪৭৬, ৭৬২৫৪
বিজোড় রোটেশন ২টি: ৬২৫৪৭, ৪৭৬২৫
ইনপুট − N = 3571
আউটপুট −
N-এর বিজোড় রোটেশন সংখ্যা: ৪
N-এর জোড় রোটেশন সংখ্যা: ০
ব্যাখ্যা − রোটেশন গুলো: ৩৫৭১, ১৩৫৭, ৭১৩৫, ৫৭১৩। সবই বিজোড়।
প্রোগ্রামে ব্যবহৃত পদ্ধতি
সংখ্যা বিজোড় নাকি জোড় সেটা এর একক স্থানীয় ডিজিট (unit digit) দিয়ে বোঝা যায়। রোটেশনের সময় সব ডিজিট একক স্থানে আসে। তাই আমরা সংখ্যকে ১০ দিয়ে ভাগ করে একক ডিজিট বের করব এবং বিজোড়/জোড় চেক করে যথাযথ কাউন্ট বাড়াব।
- সংখ্যা
int Nহিসেবে নিন। Even_Odd_rotation(int N)ফাংশন N নিয়ে বিজোড় ও জোড় রোটেশন কাউন্ট প্রিন্ট করে।- প্রাথমিক কাউন্ট:
Even_rotationএবংOdd_rotation। do-whileলুপেvalue = N % 10দিয়ে একক ডিজিট নিন।- যদি
value % 2 == 0হয়, জোড়,Even_rotationবাড়ান, অন্যথায়Odd_rotationবাড়ান। N = N / 10করুন পরবর্তী ডিজিটের জন্য।Even_rotationএবংOdd_rotationপ্রিন্ট করুন।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
void Even_Odd_rotation(int N) {
int Even_rotation = 0;
int Odd_rotation = 0;
do {
int value = N % 10;
if (value % 2 == 1) {
Odd_rotation++;
} else {
Even_rotation++;
}
N = N / 10;
} while (N != 0);
cout << "Count of rotations of N which are Odd are: " << Odd_rotation;
cout << "\nCount of rotations of N which are Even are: " << Even_rotation;
}
int main() {
int N = 341;
Even_Odd_rotation(N);
return 0;
}
আউটপুট
Count of rotations of N which are Odd are: 2 Count of rotations of N which are Even are: 1