কম্পিউটার টিউটোরিয়াল

দেওয়া শর্ত পূরণকারী সাবসেট গণনা C++-এ


একটি সংখ্যার অ্যারে এবং একটি ইন্টিজার 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

  1. C++-এ গ্রিডের মধ্যে নির্দিষ্ট দিকচালনের সম্ভাব্য মোভ সংখ্যা গণনা

  2. C++-এ দেওয়া শর্ত পূরণ করে N-ডিজিট সংখ্যা গণনা

  3. সি++ প্রোগ্রাম: দেওয়া শর্ত পূরণকারী a এবং b সংখ্যা খুঁজে বের করা

  4. সি++ প্রোগ্রাম: সংখ্যা বিভাজ্য করে এমন অঙ্কগুলোর গণনা (Count of Digits Dividing the Number)