কম্পিউটার

k দ্বারা বিভাজ্য সমষ্টি সহ সমস্ত উপ-অ্যারে গণনা করুন


এই টিউটোরিয়ালে, আমরা 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

  1. C++ এ একটি সংখ্যার সমস্ত নিখুঁত ভাজক গণনা করুন

  2. সমস্ত প্যালিনড্রোম গণনা করুন যা C++ এ একটি প্যালিনড্রোমের বর্গক্ষেত্র

  3. C++ এ সমস্ত ক্রমবর্ধমান অনুক্রম গণনা করুন

  4. C++-এ সমস্ত সাব-সিকোয়েন্সের যোগফলের যোগফল নির্ণয় করুন