[ARC160D] Mahjong
Solution#
首先判掉
然后考虑倒着做,往序列上加,那么有显然的
但发现会算重,具体来说,在同一个末位置进行
考虑到区间加操作有
枚举
暴力计算组合数,时间复杂度
Code#
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define il inline
#define re register
const int N=2020,mod=998244353;
int n,m,k,ans;
il int read(){
re int x=0;re char c=getchar(),f=0;
while(c<'0'||c>'9')f|=(c=='-'),c=getchar();
while(c>='0'&&c<='9')x=(x<<3)+(x<<1)+(c&15),c=getchar();
return f?-x:x;
}
il int Pow(int a,int b){
re int res=1;
while(b){
if(b&1)res=res*a%mod;
a=a*a%mod,b>>=1;
}
return res;
}
il int C(int n,int m){
if(n<0||m<0||n<m)return 0;
re int res=1;
for(re int i=n;i>n-m;i--)res=res*(i%mod)%mod;
for(re int i=1;i<=m;i++)res=res*Pow(i,mod-2)%mod;
return res;
}
signed main(){
n=read(),m=read(),k=read();
if(m%k)return puts("0"),0;
m/=k;
for(re int i=0;i<=n-k+1;i++)
ans=(ans+((i&1)?mod-1:1)*C(n-k+1,i)%mod*C(m-i*k+(n<<1)-k,(n<<1)-k))%mod;
cout<<ans;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)