একটি সংখ্যার অ্যারে এবং একটি ইন্টিজার x ইনপুট হিসেবে দেওয়া আছে। লক্ষ্য হলো arr[]-এর সেই সাবসেটগুলো খুঁজে বের করা যাতে সেই সেটের প্রতিটি এলিমেন্ট এবং তাদের যোগফল x দিয়ে সম্পূর্ণ বিভাজ্য হয়।
ইনপুট
arr[] = {1,2,3,4,5,6} x=3
আউটপুট
Count of subsets that satisfy the given condition :3
ব্যাখ্যা
সাবসেটগুলো হবে: [3], [6], [3,6]
ইনপুট
arr[] = {1,2,3,4,5,6} x=4
আউটপুট
Count of subsets that satisfy the given condition :1
ব্যাখ্যা
সাবসেটগুলো হবে: [4]
প্রোগ্রামে ব্যবহৃত পদ্ধতি:
এই পদ্ধতিতে আমরা arr[]-এর যে এলিমেন্টগুলো x দিয়ে সম্পূর্ণ বিভাজ্য তাদের কাউন্ট করি এবং তারপর 2^count - 1 রিটার্ন করি প্রয়োজনীয় সাবসেটের সংখ্যা হিসেবে।
- ইন্টিজার অ্যারে
arr[]নেওয়া হয়। - x ইনপুট নেওয়া হয়।
count(int arr[], int n, int x)ফাংশন অ্যারে এবং x নিয়ে শর্ত পূরণকারী সাবসেটের কাউন্ট রিটার্ন করে।- x যদি ১ হয় তবে সেটি সব এলিমেন্টকে ভাগ করে, তাই রিটার্ন
2^size - 1। - অন্যথায়, অ্যারে ট্রভারস করে
arr[i] % x == 0হলে কাউন্ট বাড়ানো হয়। - শেষে
pow(2, count) - 1রিটার্ন করা হয়।
উদাহরণ
#include <bits/stdc++.h>
#define ll long long int
using namespace std;
int sub_sets(int arr[], int size, int val) {
int count = 0;
if (val == 1) {
count = pow(2, size) - 1;
return count;
}
for (int i = 0; i < size; i++) {
if (arr[i] % val == 0) {
count++;
}
}
count = pow(2, count) - 1;
return count;
}
int main() {
int arr[] = { 4, 6, 1, 3, 8, 10, 12 }, val = 4;
int size = sizeof(arr) / sizeof(arr[0]);
cout << "Count of sub-sets that satisfy the given condition are: " << sub_sets(arr, size, val);
return 0;
}
আউটপুট
Count of sub-sets that satisfy the given condition are: 7