#include #include using namespace std;

const int N = 1005, M = 15; int n, m, mod; int f[N][M][M];

int main() { cin >> n >> m >> mod;

for (int i = 1; i <= n; i ++ )
    for (int j = 1; j <= i && j <= m; j ++ )
        f[i][j][j] = 1;

for (int i = 1; i <= n; i ++ )
    for (int j = 1; j <= i && j <= m; j ++ )
        for (int k = j - 1; k >= 1; k -- )
        {
            f[i][j][k] = f[i - 1][j][k] * (j - k) % mod;
            for (int p = k + 1; p <= j; p ++ )
                f[i][j][k] = (f[i][j][k] - f[i - 1][j][p] * (p - k) % mod + mod) % mod;
        }

for (int i = 1; i <= n; i ++ )
    for (int j = 1; j <= m; j ++ )
    {
        int res = 0;
        for (int k = 1; k <= j; k ++ )
            res = (res + f[i][j][k]) % mod;
        cout << res << ' ';
    }

return 0;

}

给出三个正整数-nm-和-mod。nn有多少个-1∼n-的排列构成的有序-m-元组p1p2p3pm-满足:nn字典序:p1p2p3pmnn-n逆序对数:p1p2p3pmnn-n设-fnm-为答案模-mod的值。对于所有-1=i=n1=j=m请你输出-fij。nn输入格式n输入包含一行三个正整数-nmmod。nn输出格式n输出一个n×m-的矩阵第-i-行第-j-列为-fij。nn写出c++代码

原文地址: https://www.cveoy.top/t/topic/q94 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录