比赛 寒假集训5 评测结果 WWWWWWEEEE
题目名称 挚爱时光 最终得分 0
用户昵称 PXCZM 运行时间 0.628 s
代码语言 C++ 内存使用 3.55 MiB
提交时间 2026-03-01 10:51:45
显示代码纯文本
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const ll mod=998244353;
ll qpow(ll x,ll y)
{
    ll ans1=1;
    while(y)
    {
        if(y&1) ans1=ans1*x%mod;
        x=x*x%mod;
        y>>=1;
    }
    return ans1;
}
ll fac[2010],inv[2010];
ll f[2010];
ll C(ll a,ll b)
{
    if(a<0||b<0||b>a) return 0;
    return fac[a]*inv[b]*inv[a-b]%mod;
}
ll ans;
int n,k;
int main()
{
    freopen("love.in","r",stdin);
    freopen("love.out","w",stdout);
    ios::sync_with_stdio(false);
    cin.tie(nullptr);cout.tie(nullptr);
    fac[0]=inv[0]=inv[1]=1;
    for(int i=1;i<=1000;i++) fac[i]=fac[i-1]*i%mod;
    for(int i=2;i<=1000;i++) inv[i]=(mod-mod/i)*inv[mod%i]%mod;
    for(int i=2;i<=1000;i++) inv[i]=inv[i-1]*inv[i]%mod;
    int T;cin>>T;
    while(T--)
    {
        ans=0;
        cin>>n>>k;
        memset(f,0,sizeof(f));
        for(ll i=0,j=1;i<=n;i++,j=j*2%mod)
            f[i]=C(n,i)*fac[n]%mod*inv[n-i]%mod*j%mod*fac[2*(n-i)]%mod;
        for(int i=k,j=1;i<=n;i++,j^=1)
            ans=(ans+(j?f[i]:-f[i])+mod)%mod;
        cout<<ans<<'\n';
    }
    return 0;
}