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

C++ में K से विभाज्य उपसरणी योग


मान लीजिए हमारे पास पूर्णांकों की एक सरणी 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 सेट करें
  • temp := 0, ans := 0, और n := सरणी a का आकार
  • i को 0 से n-1 तक लूप करें
    • temp := temp + a[i]
    • x := (temp % k + k) % k
    • ans := ans + m[x]
    • m[x] को 1 से बढ़ाएं
  • ans वापस करें

उदाहरण

#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++ में Subarray Sum Equals K

    मान लीजिए हमारे पास पूर्णांकों की एक सरणी और एक पूर्णांक k है, हमें उन सतत उपसरणियों (continuous subarrays) की कुल संख्या ढूंढनी है जिनका योग k के समान है। इसलिए यदि nums सरणी [1, 1, 1] है और k 2 है, तो आउटपुट 2 होगा।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -sums नामक एक मैप परिभाषित करें, tem

  1. - C++ में अधिकतम उपसरणी योग मॉड्यूलो m (Maximum subarray sum modulo m)

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

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

    समस्या कथन एक बाइनरी ऐरे दिया गया है, एक सबएरे के एक फ्लिप की अनुमति के साथ ऐरे में अधिकतम शून्य की संख्या ढूंढें। एक फ्लिप ऑपरेशन सभी 0 को 1 में और 1 को 0 में बदल देता है। यदि arr1 = {1, 1, 0, 0, 0, 0, 0} यदि हम पहले 2 1 को 0 में फ्लिप करते हैं, तो हम आकार 7 का सबएरे प्राप्त कर सकते हैं: {0, 0, 0