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

N এলিমেন্টের সাইন পরিবর্তন করে যেসব কম্বিনেশনের যোগফল M দ্বারা বিভাজ্য সেগুলো প্রিন্ট করা C++-তে


এই সমস্যায়, N এলিমেন্টের একটি অ্যারে দেওয়া থাকে। এবং আমাদের এলিমেন্টগুলোর যেসব যোগফল M পূর্ণসংখ্যা দ্বারা বিভাজ্য সেগুলো রিটার্ন করতে হবে।

ইনপুট: array = {4, 7, 3} ; M = 3 আউটপুট: 5+4+3 ; 5+4-3

এই সমস্যাটি সমাধান করার জন্য, আমাদের পাওয়ার সেট কনসেপ্ট জানতে হবে যা সব সম্ভাব্য যোগফল খুঁজে বের করতে সাহায্য করে। এই যোগফল থেকে, যেসব M দ্বারা বিভাজ্য সেগুলো সাইনসহ প্রিন্ট করব।

অ্যালগরিদম

ধাপ ১: '+' এবং '-' সব কম্বিনেশন ইটারেট করুন পাওয়ার সেট ব্যবহার করে। ধাপ ২: যদি যোগফল কম্বিনেশনটি M দ্বারা বিভাজ্য হয়, সাইনসহ প্রিন্ট করুন।

C++ উদাহরণ

#include <iostream> using namespace std; void printDivisibleSum(int a[], int n, int m){ for (int i = 0; i < (1 << n); i++) { int sum = 0; int num = 1 << (n - 1); for (int j = 0; j < n; j++) { if (i & num) sum += a[j]; else sum += (-1 * a[j]); num = num >> 1; } if (sum % m == 0) { num = 1 << (n - 1); for (int j = 0; j < n; j++) { if ((i & num)) cout << "+ " << a[j] << " "; else cout << "- " << a[j] << " "; num = num >> 1; } cout << endl; } } } int main(){ int arr[] = {4,7,3}; int n = sizeof(arr) / sizeof(arr[0]); int m = 3; cout<<"The sum combination divisible by n :\n"; printDivisibleSum(arr, n, m); return 0; }

আউটপুট

n দ্বারা বিভাজ্য যোগফল কম্বিনেশনগুলো হলো:

- 4 + 7 - 3 - 4 + 7 + 3 + 4 - 7 - 3 + 4 - 7 + 3
  1. সি++-এ অনির্দেশিত গ্রাফের কানেক্টেড কম্পোনেন্টগুলোর মিনিমাম এলিমেন্টের যোগফল

  2. C++-এ Nটি রেঞ্জ থেকে সব উপাদান কভার করা এমন একটি রেঞ্জ খুঁজে বের করা

  3. C++ ব্যবহার করে অ্যারেতে এমন এলিমেন্ট বের করা যেটি সব এলিমেন্টকে ভাগ করে দেয়

  4. C++-এ অ্যারের সব উপাদানে XOR অপারেশন প্রয়োগ করে অ্যারে যোগফল ন্যূনীকরণ