Heim  >  Artikel  >  Backend-Entwicklung  >  C++-Programm zum Finden von Sequenzpaaren, die minimale und maximale Elemente in einer Sequenz enthalten

C++-Programm zum Finden von Sequenzpaaren, die minimale und maximale Elemente in einer Sequenz enthalten

WBOY
WBOYnach vorne
2023-09-05 23:29:061161Durchsuche

C++-Programm zum Finden von Sequenzpaaren, die minimale und maximale Elemente in einer Sequenz enthalten

Angenommen, wir haben drei Zahlen N, M und K. Es gibt N horizontale Reihen und M vertikale Reihen. Wir schreiben ganze Zahlen zwischen 1 und K in jede Zelle und definieren die Folgen A und B so, dass −

  • für jedes i im Bereich 1 bis N A[i] der Minimalwert aller Elemente in Zeile i

    ist
  • Für jedes j im Bereich 1 bis M ist B[j] der Maximalwert aller Elemente in Spalte j

Wir müssen die Menge (A, B) finden. Ist die Antwort zu groß, wird das Ergebnis modulo 998244353 zurückgegeben.

Wenn die Eingabe also N = 2; M = 2 ist, ist die Ausgabe 7, da (A[1], A[2], B[1], B[2]) ( 1) sein kann ,1,1,1), (1,1,1,2), (1,1,2,1), (1,1,2,2), (1,2,2,2), ( 2 ,1,2,2) oder (2,2,2,2).

Schritte

Um dieses Problem zu lösen, befolgen wir die folgenden Schritte:

p := 998244353
Define a function power(), this will take a, b, and return (a^b) mod p
From the main method, do the following:
if n is same as 1, then:
   return power(K, m)
if m is same as 1, then:
   return power(K, n)
ans := 0
for initialize t := 1, when t <= K, update (increase t by 1), do:
   ans := (ans + (power(t, n) - power(t - 1, n) + p) mod p * power(K - t + 1, m)) mod p
return ans

Beispiel

Sehen wir uns zum besseren Verständnis die Implementierung unten an – Die chinesische Übersetzung von

#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;
}

Input

lautet:

Input

2, 2, 2

Ausgabe

7

Das obige ist der detaillierte Inhalt vonC++-Programm zum Finden von Sequenzpaaren, die minimale und maximale Elemente in einer Sequenz enthalten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen