結果
問題 |
No.1321 塗るめた
|
ユーザー |
![]() |
提出日時 | 2025-10-11 10:22:29 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 14 ms / 2,000 ms |
コード長 | 813 bytes |
コンパイル時間 | 1,534 ms |
コンパイル使用メモリ | 162,468 KB |
実行使用メモリ | 7,716 KB |
最終ジャッジ日時 | 2025-10-11 10:22:33 |
合計ジャッジ時間 | 3,883 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 45 |
ソースコード
#include<bits/stdc++.h> #define int long long using namespace std; const int N=2e5+10; const int mod=998244353; int fac[N],inv[N]; int Pow(int a,int b=mod-2,int MOD=mod){ int s=1; while(b){ if(b&1)s=s*a%MOD; a=a*a%MOD;b>>=1; } return s; } int C(int n,int m){ if(n<m)return 0; return fac[n]*inv[m]%mod*inv[n-m]%mod; } int n,m,k; signed main(){ ios::sync_with_stdio(false);cin.tie(0),cout.tie(0); fac[0]=1; for(int i=1;i<N;++i)fac[i]=fac[i-1]*i%mod; inv[N-1]=Pow(fac[N-1]); for(int i=N-2;i>=0;--i)inv[i]=inv[i+1]*(i+1)%mod; cin>>n>>m>>k; int Ans=0; for(int j=0;j<=k;++j){ int val=C(k,j)*Pow(m+k-j,n)%mod; if(j&1)Ans=(Ans+mod-val)%mod; else Ans=(Ans+val)%mod; } Ans=Ans*C(m,k)%mod; cout<<Ans; return 0; }