Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में K से विभाज्य Subarray रकम

मान लीजिए कि हमारे पास पूर्णांकों की एक सरणी A है। हमें सन्निहित गैर-रिक्त उप-सरणी की संख्या ज्ञात करनी है, जिसका योग k से विभाज्य है। यदि A =[4,5,0,-2,-3,1] और k =5, तो आउटपुट 7 होगा। सात उपसरणियाँ हैं। [[4,5,0,-2,-3,1], [5], [5,0],[5,0,-2,-3], [0], [0,-2,- 3], [-2,-3]]

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • एक नक्शा m बनाएं और m[0] को 1 के रूप में सेट करें
  • अस्थायी:=0, उत्तर:=0, और n:=सरणी का आकार एक
  • मैं के लिए 0 से n - 1 की सीमा में
    • अस्थायी:=अस्थायी + a[i]
    • x :=(temp mod k + k) mod k
    • उत्तर:=उत्तर + एम[x]
    • m[x] को 1 से बढ़ाएं
  • वापसी उत्तर

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int subarraysDivByK(vector<int>& a, int k) {
      unordered_map <int, int> m;
      m[0] = 1;
      int temp = 0;
      int ans = 0;
      int n = a.size();
      for(int i = 0; i < n; i++){
         temp += a[i];
         int x = (temp % k + k) % k;
         ans += m[x];
         m[x]++;
      }
      return ans;
   }
};
main(){
   vector<int> v = {4,5,0,-2,-3,1};
   Solution ob;
   cout <<(ob.subarraysDivByK(v, 5));
}

इनपुट

[4,5,0,-2,-3,1]
5

आउटपुट

7

  1. सबरे योग C++ में K के बराबर होता है

    मान लीजिए कि हमारे पास पूर्णांकों की एक सरणी और एक पूर्णांक k है, तो हमें निरंतर उप-सरणियों की कुल संख्या ज्ञात करनी होगी जिनका योग k के समान है। तो अगर nums array [1, 1, 1] है और k 2 है, तो आउटपुट 2 होगा। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - एक मानचित्र को परिभाषित करें जिसे योग कहा ज

  1. सी++ में अधिकतम सबरे योग मॉड्यूलो एम

    इस समस्या में, हमें n आकार की एक सरणी और एक पूर्णांक m दिया जाता है। हमारा काम एक ऐसा प्रोग्राम बनाना है जो C++ में अधिकतम सबअरे योग मॉड्यूल m ढूंढेगा। कार्यक्रम विवरण - यहां, हम सबएरे के सभी तत्वों के योग को m से विभाजित करके प्राप्त अधिकतम मान प्राप्त करेंगे। समस्या को समझने के लिए एक उदाहरण लेत

  1. सी ++ में एक सबरे को फ़्लिप करके 0 की संख्या को अधिकतम करें

    समस्या कथन एक बाइनरी सरणी को देखते हुए, एक सरणी में शून्य की अधिकतम संख्या ज्ञात करें जिसमें एक सबरे के एक फ्लिप की अनुमति है। एक फ्लिप ऑपरेशन सभी 0s से 1s और 1s से 0s तक स्विच करता है अगर arr1={1, 1, 0, 0, 0, 0, 0} यदि हम पहले 2 1 से 0 तक पलटते हैं, तो हम आकार 7 की उप-सरणी इस प्रकार प्राप्त कर स