Maison > développement back-end > C++ > Programme C++ pour trouver des paires de séquences contenant des éléments minimum et maximum dans une séquence

Programme C++ pour trouver des paires de séquences contenant des éléments minimum et maximum dans une séquence

WBOY
Libérer: 2023-09-05 23:29:06
avant
1200 Les gens l'ont consulté

Programme C++ pour trouver des paires de séquences contenant des éléments minimum et maximum dans une séquence

Supposons que nous ayons trois nombres N, M et K. Il y a N lignes horizontales et M lignes verticales. Nous écrirons des entiers compris entre 1 et K dans chaque cellule et définirons les séquences A et B telles que −

  • pour chaque i compris entre 1 et N, A[i] est la valeur minimale de tous les éléments de la ligne i

  • Pour chaque j compris entre 1 et M, B[j] est la valeur maximale de tous les éléments de la colonne j

Nous devons trouver la quantité (A, B). Si la réponse est trop grande, le résultat modulo 998244353 est renvoyé.

Donc, si l'entrée est N = 2 ; M = 2 ; K = 2, la sortie sera 7 car (A[1], A[2], B[1], B[2]) peut être ( 1 ,1,1,1), (1,1,1,2), (1,1,2,1), (1,1,2,2), (1,2,2,2), ( 2 ,1,2,2) ou (2,2,2,2).

Étapes

Pour résoudre ce problème, nous suivrons les étapes suivantes :

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
Copier après la connexion

Exemple

Voyons l'implémentation ci-dessous pour mieux comprendre - La traduction chinoise de

#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;
}
Copier après la connexion

Input

est :

Input

2, 2, 2
Copier après la connexion

Sortie

7
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal