题意:
求上面那个神奇的函数的x的m次方的系数。
参考:点击打开链接
提取出本题中用到的信息:
数据比较水,算双阶乘的时候把能约掉的约掉,阶乘直接暴力,注意逆元,判断条件写清楚就行了。
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MOD=998244353;
LL jc(LL m)
{
LL sum=1;
for(LL i=1;i<=m;i++)
sum=(sum*i)%MOD;
return sum;
}
LL quickpow(LL m,LL n)
{
LL b=1;
m%=MOD;
while(n>0)
{
if(n&1)b=(b*m)%MOD;
n=n>>1;
m=(m*m)%MOD;
}return b;
}
LL jcc(LL n,LL m)
{
LL sum=1;
if(m>1)
for(LL i=n+m-2;i>=n-m+2;i-=2)
sum=(sum*i)%MOD;
else if(m==1)return 1;
else return quickpow(n,MOD-2);
return sum;
}
int get(LL n,LL m)
{
if((n-m)%2!=0)return 0;
else if(((n-m)/2)%2==1)return -1;
else return 1;
}
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=-1)
{
//printf("%lld\n",jcc(n,m));
LL a=((n*jcc(n,m))%MOD*quickpow(jc(m),MOD-2))%MOD;//cout<<"a="<<a<<endl;
LL ans=0;
if(get(n,m)==0)ans=0;
if(get(n,m)==1)ans=a%MOD;
if(get(n,m)==-1)ans=(-a+MOD)%MOD;
//ans=2*quickpow(2,MOD-2);
printf("%lld\n",ans);
}
return 0;
}