結果
| 問題 | No.1388 Less than K |
| コンテスト | |
| ユーザー |
vjudge1
|
| 提出日時 | 2026-01-06 13:45:09 |
| 言語 | C++23 (gcc 15.2.0 + boost 1.89.0) |
| 結果 |
AC
|
| 実行時間 | 13 ms / 3,000 ms |
| コード長 | 1,114 bytes |
| 記録 | |
| コンパイル時間 | 3,378 ms |
| コンパイル使用メモリ | 338,748 KB |
| 実行使用メモリ | 7,848 KB |
| 最終ジャッジ日時 | 2026-01-06 13:45:16 |
| 合計ジャッジ時間 | 6,295 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 74 |
ソースコード
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5,mod=998244353;
#define filp(x,y,z) y-=(z),x+=(z),swap(x,y)
int qpow(int a,int b){
int res=1;
while(b){
if(b&1)res=1ll*a*res%mod;
b>>=1;a=1ll*a*a%mod;
}return res;
}
int n,m,k;
int jie[N<<1],inv[N<<1];
int C(int n,int m){
if(m<0||m>n)return 0;
return 1ll*jie[n]*inv[m]%mod*inv[n-m]%mod;
}
int main(){
// freopen("city.in","r",stdin);
// freopen("city.out","w",stdout);
scanf("%d%d%d",&n,&m,&k);n--,m--;k>>=1;
jie[0]=1;
for(int i=1;i<=n+m;i++)jie[i]=1ll*jie[i-1]*i%mod;
inv[n+m]=qpow(jie[n+m],mod-2);
for(int i=n+m;i>=1;i--)inv[i-1]=1ll*inv[i]*i%mod;
int x=n,y=n,t=n+m,ans=1ll*C(t,n)*C(t,n)%mod;
while(x>=0&&x<=n+m&&y>=0&&y<=n+m){
filp(x,y,k+1);ans=(ans+mod-1ll*C(t,x)*C(t,y)%mod)%mod;
filp(x,y,-k-1);ans=(ans+1ll*C(t,x)*C(t,y)%mod)%mod;
}
x=n,y=n;
while(x>=0&&x<=n+m&&y>=0&&y<=n+m){
filp(x,y,-k-1);ans=(ans+mod-1ll*C(t,x)*C(t,y)%mod)%mod;
filp(x,y,k+1);ans=(ans+1ll*C(t,x)*C(t,y)%mod)%mod;
}
printf("%d\n",ans);
return 0;
}
vjudge1