Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
54943 | alex_liu | 列队 | C++ | 运行出错 | 0 | 0 MS | 248 KB | 1079 | 2022-08-08 11:32:39 |
#include<bits/stdc++.h> #define int long long #define mod 998244353 using namespace std; inline int read(){ int x=0,f=1; char c=getchar(); while(!isdigit(c)){if(c=='-')f=-1;c=getchar();} while(isdigit(c)){x=(x<<1)+(x<<3)+(c^48);c=getchar();} return x*f; } inline int A(int x,int y){ int ans=1; for(int i=x;i>=x-y+1;i--)(ans*=i)%=mod; return ans%mod; } inline int C(int x,int y){ int ans=1,ans2=1; for(int i=1;i<=y;i++)(ans2*=i)%=mod; return A(x,y)/ans2; } int t,m,n; signed main(){ freopen("line.in","r",stdin); freopen("line.out","w",stdout); t=read(); while(t--){ m=read(),n=read(); if(n<m-1)puts("0"); else if(!(n^(m-1)))cout<<A(m,m)%mod<<endl; else{ int ans=A(m,m),q=m<<1; for(int i=n-m+1;i;i--,q++)(ans*=A(q,i))%=mod; cout<<ans<<endl; } } return 0; } //C(n,m)=n*(n-1)*...*(n-m+1)/m! ///cout<<(A(m,m)*(C(n,m-1)+A((n-m+1),(n-m+1))<<1))%mod<<endl; // int ans1=1,ans2=1,q=A((m<<1),n-m+1); // for(int i=1;i<m;i++)(ans1*=i)%=mod; // (ans1*=ans1)%=mod,(ans1*=m)%=mod; // cout<<(ans1*q)%mod<<endl;