इस समस्या में, हमें N तत्वों की एक सरणी दी गई है। और उन सभी तत्वों के योग को वापस करना है जो एक पूर्णांक M से विभाज्य हैं।
इनपुट: सरणी = {4, 7, 3} ; M = 3 आउटपुट: 5+4+3 ; 5+4-3 इस समस्या को हल करने के लिए, हमें पावर सेट की अवधारणा जानने की आवश्यकता है जिसका उपयोग सभी संभावित योगों को खोजने के लिए किया जा सकता है। इस योग से, उन सभी को प्रिंट करें जो M से विभाज्य हैं।
एल्गोरिदम
चरण 1: पावर सेट का उपयोग करके '+' और '-' के सभी संयोजनों पर पुनरावृति करें। चरण 2: यदि योग संयोजन M से विभाज्य है, तो उन्हें चिह्नों के साथ प्रिंट करें।
उदाहरण
#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