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

ऐसे अनुक्रम युग्म ढूंढने के लिए C++ प्रोग्राम जहां अनुक्रम न्यूनतम और अधिकतम तत्व रखता है


मान लीजिए हमारे पास तीन संख्याएं N, M और K हैं। N क्षैतिज पंक्तियां और M लंबवत पंक्तियां हैं। हम प्रत्येक सेल पर 1 और K के बीच एक पूर्णांक लिखेंगे, और अनुक्रम A और B को परिभाषित करेंगे, जैसे कि:

  • रेंज 1 से N में प्रत्येक i के लिए, A[i] iवीं पंक्ति के सभी तत्वों का न्यूनतम है
  • रेंज 1 से M में प्रत्येक j के लिए, B[j] jवें कॉलम के सभी तत्वों का अधिकतम है

हमें युग्म (A, B) की संख्या ढूंढनी है। यदि उत्तर बहुत बड़ा है, तो परिणाम को 998244353 मॉड्यूलो वापस करें।

उदाहरण के लिए, यदि इनपुट N = 2; M = 2; K = 2 है, तो आउटपुट 7 होगा, क्योंकि (A[1], A[2], B[1], B[2]) हैं (1,1,1,1), (1,1,1,2), (1,1,2,1), (1,1,2,2), (1,2,2,2), (2,1,2,2), या (2,2,2,2)।

चरण

इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:

p := 998244353 एक फ़ंक्शन power() परिभाषित करें, जो a, b लेता है, और (a^b) mod p वापस करता है मुख्य विधि से, निम्नलिखित करें: यदि n, 1 के बराबर है, तो: power(K, m) वापस करें यदि m, 1 के बराबर है, तो: power(K, n) वापस करें ans := 0 t := 1 से K तक, करें: ans := (ans + (power(t, n) - power(t - 1, n) + p) mod p * power(K - t + 1, m)) mod p ans वापस करें

उदाहरण

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

#include <bits/stdc++.h> using namespace std; long p = 998244353; long power(long a, long b, long ret = 1){    for (; b; b >>= 1, a = a * a % p)       if (b & 1)          ret = ret * a % p;    return ret; } long solve(int n, int m, int K){    if (n == 1)       return power(K, m);    if (m == 1)       return power(K, n);    long ans = 0;    for (long t = 1; t <= K; t++){       ans = (ans + (power(t, n) - power(t - 1, n) + p) % p * power(K - t + 1, m)) % p;    }    return ans; } int main(){ int N = 2; int M = 2; int K = 2; cout << solve(N, M, K) << endl; }

इनपुट

2, 2, 2 

आउटपुट

7

  1. C++ में बाइनरी ट्री में अधिकतम (या न्यूनतम) मान ढूंढें C++ में बाइनरी ट्री में अधिकतम (या न्यूनतम) मान ढूंढें

    इस समस्या में, हमें एक बाइनरी ट्री दिया गया है। हमारा कार्य बाइनरी ट्री में अधिकतम (या न्यूनतम) मान ढूंढना है। समस्या विवरण: हमें बाइनरी ट्री के उन नोड्स को ढूंढना है जिनका मान बाइनरी ट्री में अधिकतम और न्यूनतम है। समस्या को समझने के लिए एक उदाहरण लेते हैं, इनपुट: आउटपुट: max = 9 , min = 1 समाधान

  1. - C++ प्रोग्राम: दो अलग-अलग सरणियों में संग्रहीत तत्वों की माध्यिका खोजें

    एल्गोरिदमMedian() फ़ंक्शन में दो सरणी a1[], a2[] और n = तत्वों की संख्या लें। i और j को 0 से प्रारंभ करें, n1 और n2 को -1 से। 0 से n तक लूप चलाएं: यदि i == n तो n1 = n2, n2 = a2[0], लूप तोड़ें। अन्यथा यदि j == n तो n1 = n2, n2 = a1[0], लूप तोड़ें। यदि a1[i] < a2[j] तो n1 = n2, n2 = a1[i], i बढ़ाएं।

  1. - C# Program: Array में Maximum और Minimum Element Find करें

    Minimum और Maximum Element को First Element पर Set करें ताकि आप सभी Elements से Compare कर सकें।Maximum के लिए। max) {    max = arr[i]; }Minimum के लिए।if(arr[i] < min) {    min = arr[i]; }Array में Maximum और Minimum Elements की Position Find करने के लिए निम्न Code Run करें।Exam