इस ट्यूटोरियल में, हम k से विभाज्य योग वाले उप-सरणी की संख्या को खोजने के लिए एक प्रोग्राम पर चर्चा करेंगे।
इसके लिए हमें एक सरणी और एक मान k प्रदान किया जाएगा। हमारा कार्य उन उप सरणियों की संख्या ज्ञात करना है जिनका योग दिए गए मान k के बराबर है।
उदाहरण
#include <bits/stdc++.h>
using namespace std;
//counting subarrays with k sum
int count_subarray(int arr[], int n, int k){
int mod[k];
memset(mod, 0, sizeof(mod));
int cumSum = 0;
for (int i = 0; i < n; i++) {
cumSum += arr[i];
//taking modulus to get positive sum
mod[((cumSum % k) + k) % k]++;
}
int result = 0;
for (int i = 0; i < k; i++)
if (mod[i] > 1)
result += (mod[i] * (mod[i] - 1)) / 2;
result += mod[0];
return result;
}
int main(){
int arr[] = { 4, 5, 0, -2, -3, 1 };
int k = 5;
int n = sizeof(arr) / sizeof(arr[0]);
cout << count_subarray(arr, n, k) << endl;
int arr1[] = { 4, 5, 0, -12, -23, 1 };
nt k1 = 5;
int n1 = sizeof(arr1) / sizeof(arr1[0]);
cout << count_subarray(arr1, n1, k1) << endl;
return 0;
} आउटपुट
7 7