AcWing 523. Problema de números combinados

El número de combinaciones Cmn representa el número de opciones para seleccionar m elementos de n elementos. 
Por ejemplo, elegir dos elementos de los tres elementos (1, 2, 3) puede tener tres métodos de selección (1, 2), (1, 3), (2, 3). 
Según la definición del número de combinaciones, podemos dar una fórmula general para calcular el número de combinaciones Cmn:

¡Cmn = n! M! (N − m)!

Donde n! = 1 × 2 × · · · × n. 
Scallion quiere saber cuántos pares (i, j) satisfacen Cji que es un múltiplo de k para todo 0 ≤ i ≤ n, 0 ≤ j ≤ min (i, m) dados n, my k.

La primera línea del formato de entrada
tiene dos números enteros t, k, donde t representa cuántos conjuntos de datos de prueba hay en el punto de prueba. Consulte la descripción del problema para conocer el significado de k.
A continuación, hay dos números enteros n, m en cada línea de t líneas, donde el significado de n, m se muestra en la descripción del problema.

El formato de salida
tiene un total de t líneas, y cada línea tiene un número entero que representa todos los pares 0 ≤ i ≤ n, 0 ≤ j ≤ min (i, m) (i, j) que satisfacen que Cji es un múltiplo de k.

Rango de datos
n, m≤2000,2≤k≤21, t≤10 ^ 4
Ejemplo de entrada:
1 2
3 3

Ejemplo de salida:
1

el código se muestra a continuación:

#include <iostream>
using namespace std;
const int N = 2010;
int c[N][N],s[N][N];

int main()
{
    
    
    int cnt = 0,k = 0;
    cin>>cnt>>k;
    for (int i = 0;i<N;i++)
        for (int j = 0;j<=i;j++)
            {
    
    
                if (!j) c[i][j] = 1%k;
                else c[i][j] = (c[i-1][j]+c[i-1][j-1])%k;
                
                if (!c[i][j]) s[i][j] = 1;
                
            }
            
    for (int i = 0;i<N;i++)
        for (int j = 0;j<N;j++)
        {
    
    
            if(i) s[i][j] +=s[i-1][j];
            if (j) s[i][j] +=s[i][j-1];
            if (i&&j) s[i][j] -=s[i-1][j-1];
        }
    
    while(cnt--)
    {
    
    
        int n,m;
        cin>>n>>m;
        cout<<s[n][m]<<endl;
    }
    return 0;
}

Supongo que te gusta

Origin blog.csdn.net/m0_51955470/article/details/114155453
Recomendado
Clasificación