Heim > Backend-Entwicklung > C++ > Hauptteil

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

WBOY
Freigeben: 2023-09-05 23:29:06
nach vorne
1158 Leute haben es durchsucht

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
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

Input

lautet:

Input

2, 2, 2
Nach dem Login kopieren

Ausgabe

7
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage