玲珑杯#2.5 A-B

这个题解错了网上还没有题解 囧

fi = (i%2)? 1 : -1
Fn = (n+m1m1) - ni=0 m1j=1 (ni(j+1)+m2 m2) * (m1 j)*fj
Fn *= m

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN = 1e5+5;
const int MOD = 998244353;
ll C[1005][1005];

int main(){
    int n,m;
    C[0][0] = 1;
    for(int i = 1; i <= 1000; ++i) {
        C[i][0] = C[i][i] = 1;
        for(int j = 1; j < i; ++j) {
            C[i][j] = (C[i-1][j-1]+C[i-1][j]) %MOD;
        }
    }
    while(~scanf("%d %d",&n,&m)) {
        ll ans = C[n+m-1][m-1];
        for(int i = 0; i <= n; ++i) {
            int fl = -1;
            for(int j = 1; j <= m-1; ++j) {
                if(n-i*(j+1) < 0) continue;
                int tt = n-i*(j+1);
                ans = (ans + fl*C[tt+m-2][m-2]*C[m-1][j]%MOD + MOD) %MOD;
                fl *= -1;                   
            }
        }
        printf("%lld
",ans*m%MOD);
    }
    return 0;
}

原文地址:https://www.cnblogs.com/Basasuya/p/8433755.html