D. Contar el Matrices ---------------------------- (pensando) Combinatoria

Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción
El significado de problemas:
el número de especies seleccionados de 1-m n hacia fuera para formar una matriz de tres condiciones deben cumplirse en
1,1 <AI = <m =
2. Un par de elementos exactamente iguales
3.aj <aj + 1 si j < i y aj > aj + 1 si j> = i

P. ¿Cuántos existen tales combinaciones

Análisis:
El primer paso: Nosotros especie seleccionada de entre el número m de n-1 (puesto que hay un par de elementos de la misma) C (m, n-1)
Etapa: suponiendo que el máximo en esta posición i, necesitamos que ambos lados del valor máximo se lleva a cabo para los mismos elementos. entonces se deja de 2-n- (eliminación máximo) el número de i-2 º fetch (ya que hay un par de parece idéntica a la derecha i también, de origen natural a la izquierda), siempre que el número de tomado i-2, también es C (n-2, i- 2), entonces, naturalmente, el número correcto (ni).

fórmula de composición es: C (m, n-1) * C (n-2, i-2) * (ni)

El tercer paso: la posición del valor máximo de la enumeración de 2 ~ n-1

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+1000;
const int MOD=998244353;
ll fact[N];
int n,m;
void init()
{
	fact[0]=1;
	for(int i=1;i<=N;i++) fact[i]=(fact[i-1]*i)%MOD;
}
ll quick(ll a,ll b)
{
	ll res=1;
	while(b)
	{
		
		if(b&1) res=res*a%MOD;
		a=a*a%MOD;
		b>>=1;
	}
	return res;
}
ll C(int a,int b)
{
 
	return fact[a]*quick(fact[b]*fact[a-b]%MOD,MOD-2)%MOD;
}
int main()
{
	init();
	scanf("%d %d",&n,&m);
	
	ll ans=0;
	for(int i=2;i<=n-1;i++)
	{
		ans=(ans+C(m,n-1)%MOD*C(n-2,i-2)%MOD*(n-i)%MOD)%MOD;
	}
	cout<<ans<<endl;
 } 

Publicados 491 artículos originales · ganado elogios 11 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/qq_43690454/article/details/104879293
Recomendado
Clasificación