結果

問題 No.1388 Less than K
コンテスト
ユーザー vjudge1
提出日時 2026-04-11 12:45:24
言語 C++17
(gcc 15.2.0 + boost 1.89.0)
コンパイル:
g++-15 -O2 -lm -std=c++17 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
TLE  
実行時間 -
コード長 888 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 1,283 ms
コンパイル使用メモリ 212,568 KB
実行使用メモリ 21,184 KB
最終ジャッジ日時 2026-04-11 12:46:12
合計ジャッジ時間 10,584 ms
ジャッジサーバーID
(参考情報)
judge1_0 / judge2_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 18 TLE * 1 -- * 55
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include<bits/stdc++.h>
#define int  long long
using namespace std;
const int mod=998244353;
int ksm(int a,int p){
	if(p==0)return 1;
	int tmp=ksm(a,p/2);
	if(p&1)return tmp*tmp%mod*a%mod;
	else return tmp*tmp%mod;
}
int fac[1000005],inv[1000005];
int C(int n,int m){
	if(n<m||n<0||m<0)return 0;
	return fac[n]*inv[m]%mod*inv[n-m]%mod;
}
int h,w,K;
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	fac[0]=inv[0]=1;
	for(int i=1;i<=500000;i++)fac[i]=fac[i-1]*i%mod,inv[i]=ksm(fac[i],mod-2);
	cin>>h>>w>>K;
	int d=K/2,ans=0;
	for(int m=0;m<=min(h-1,w-1);m++){
		int mink=-1*((m+d+1)/(2*d+2)),maxk=m/(2*d+2);
		int sum=0;
		for(int k=mink;k<=maxk;k++){
			sum+=((C(2*m,m+k*(2*d+2))-C(2*m,m+d+1+k*(2*d+2)))%mod+mod)%mod;
			sum%=mod;
			sum+=mod;
			sum%=mod;
		}
		ans+=C(h+w-2,2*m)*C(h+w-2-2*m,h-1-m)%mod*sum%mod;
		ans%=mod;
		ans+=mod;
		ans%=mod;
	}
	cout<<ans;
}
0