আমরা ধনাত্মক পূর্ণসংখ্যার একটি অ্যারে দেওয়া হয়. লক্ষ্য হল একটি অ্যারেতে সংখ্যার উপসেটগুলি খুঁজে বের করা যাতে প্রতিটি উপসেটের মধ্যে আলাদা জোড় সংখ্যা থাকে। একই উপাদান সহ সমস্ত সেট 1 হিসাবে গণনা করা হবে। [2,4,6] এবং [6,2,4] একই সেট।
আসুন উদাহরণ দিয়ে বুঝতে পারি
ইনপুট − arr[] ={1,3,5,7,8,3,2 };
আউটপুট −3
স্বতন্ত্র জোড় সংখ্যা বিশিষ্ট উপসেটের সংখ্যাব্যাখ্যা − উপসেটগুলি হবে − [2], [8], [2,8]
ইনপুট − arr[] ={2,4,6};
আউটপুট −স্বতন্ত্র জোড় সংখ্যা বিশিষ্ট উপসেটের সংখ্যা হল −7
ব্যাখ্যা − উপসেটগুলি হবে − [2], [4], [6], [2,4], [2,6], [4,6], [2,4,6]
নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতিটি নিম্নরূপ
আমরা অ্যারের সমস্ত জোড় সংখ্যার একটি সেট তৈরি করি। এটি স্বতন্ত্র জোড় সংখ্যার গণনা দেয়। সূত্রটি হবে 2 সম গণনা - 1
-
সংখ্যার একটি অ্যারে নিন arr[]।
-
Functionsubset_even(int arr[], int size) সংখ্যার একটি অ্যারে নেয় এবং স্বতন্ত্র জোড় সংখ্যা সহ উপসেটগুলি প্রদান করে৷
-
0 হিসাবে প্রাথমিক গণনা নিন।
-
জোড় সংখ্যার জন্য একটি unordered_set
un_set তৈরি করুন। -
ট্রাভার্স arr[] লুপ ব্যবহার করে। i=0 থেকে i<দৈর্ঘ্য।
-
যদি arr[i]%2==0, এটি সমান হয়। আন_সেট করতে ঢোকান।
-
count=un_set.size() // স্বতন্ত্র জোড় সংখ্যা নিন।
-
আপডেট গণনা =pow(2,গণনা) - 1.
-
ফলাফল হিসাবে রিটার্ন গণনা।
উদাহরণ
#include <bits/stdc++.h> using namespace std; int subset_even(int arr[], int size){ int count = 0; unordered_set<int> un_set; for(int i=0; i<size; i++){ if (arr[i] % 2 == 0){ un_set.insert(arr[i]); } } unordered_set<int>:: iterator i; count = un_set.size(); count = pow(2, count) - 1; return count; } int main(){ int arr[] = {10, 4, 21, 3, 5, 7, 6, 8}; int size = sizeof(arr) / sizeof(arr[0]); cout<<"Count of subsets having distinct even numbers are: "<<subset_even(arr, size); return 0; }
আউটপুট
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −
উৎপন্ন করবেCount of subsets having distinct even numbers are: 15