牛客提高D6t3 分班问题
分析
就就就是推柿子
看官方题解吧/px
代码
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cctype> #include<cmath> #include<cstdlib> #include<queue> #include<ctime> #include<vector> #include<set> #include<map> #include<stack> using namespace std; #define int long long const int mod = 19260817; int n,m,t,Ans,p[mod+5],inv[mod+5]; inline int pw(int x,int p){ int res=1; while(p){ if(p&1)res=res*x%mod; x=x*x%mod; p>>=1; } return res; } inline void init(){ int i,j,k; p[0]=1; for(i=1;i<mod;i++)p[i]=p[i-1]*i%mod; inv[mod-1]=pw(p[mod-1],mod-2); for(i=mod-2;i>=0;i--)inv[i]=inv[i+1]*(i+1)%mod; return; } inline int c(int n,int m){ if(n<m)return 0; return p[n]*inv[m]%mod*inv[n-m]%mod; } inline int lus(int n,int m){ if(n<mod&&m<mod)return c(n,m); return c(n%mod,m%mod)*lus(n/mod,m/mod)%mod; } signed main(){ int i,j,k; scanf("%lld",&t); init(); while(t--){ scanf("%lld%lld",&n,&m); Ans=2ll*m%mod*lus(n+m-1,n-1)%mod; printf("%lld\n",Ans); } return 0; }