কম্পিউটার টিউটোরিয়াল

C++ প্রোগ্রাম: সিকোয়েন্স জোড়া যেখানে সিকোয়েন্সে মিনিমাম ও ম্যাক্সিমাম এলিমেন্ট থাকে

মান লিখুন: আমাদের কাছে তিনটি সংখ্যা N, M এবং K রয়েছে। Nটি হরিজেন্টাল সারি এবং Mটি ভার্টিকাল কলাম আছে। প্রতিটি সেলে 1 থেকে K পর্যন্ত একটি পূর্ণসংখ্যা লিখতে হবে। এবং দুটি সিকোয়েন্স A এবং B সংজ্ঞায়িত করুন যাতে:

  • প্রতিটি i (1 থেকে N) এর জন্য, A[i] হল i-তম সারির সব এলিমেন্টের মিনিমাম
  • প্রতিটি j (1 থেকে M) এর জন্য, B[j] হল j-তম কলামের সব এলিমেন্টের ম্যাক্সিমাম

(A, B) জোড়ার সংখ্যা বের করতে হবে। উত্তর বড় হলে ৯৯৮২৪৪৩৫৩ দিয়ে মডুলো নিন।

উদাহরণ

যদি ইনপুট হয় 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
    for t := 1 থেকে K:
        ans := (ans + (power(t,n) - power(t-1,n) + p) mod p * power(K-t+1, m)) mod p
    ans রিটার্ন করুন

C++ বাস্তবায়ন

#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, M = 2, K = 2;
    cout << solve(N, M, K) << endl;
}

ইনপুট

2, 2, 2

আউটপুট

7
  1. C++-এ বাইনারি ট্রিতে সর্বোচ্চ ও ন্যূনতম মান বের করুন

  2. C++ প্রোগ্রাম: ম্যাট্রিক্সের বেসিস ও ডাইমেনশন নির্ণয়

  3. C++ প্রোগ্রাম: দুটি আলাদা অ্যারেতে সংরক্ষিত এলিমেন্টের মেডিয়ান বের করা

  4. C# প্রোগ্রাম: অ্যারেতে সর্বোচ্চ (Maximum) এবং সর্বনিম্ন (Minimum) এলিমেন্ট বের করা