結果
問題 |
No.2130 分配方法の数え上げ mod 998244353
|
ユーザー |
![]() |
提出日時 | 2022-11-25 21:48:42 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 17 ms / 2,000 ms |
コード長 | 911 bytes |
コンパイル時間 | 4,035 ms |
コンパイル使用メモリ | 229,008 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-02 04:24:14 |
合計ジャッジ時間 | 4,835 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 38 |
ソースコード
#include <bits/stdc++.h> #include <atcoder/all> using namespace std; using namespace atcoder; #define rep(i,n) for(int i=0;i<(n);i++) typedef long long ll; //using mint = modint; using mint = modint998244353; using P = pair<int, int>; const ll INF=1LL<<60, dx[]={0,1,0,-1},dy[]={1,0,-1,0}; template <typename T> inline bool chmin(T& a,const T&b) {if(a>b){a=b; return 1;} return 0;} template <typename T> inline bool chmax(T& a,const T&b) {if(a<b){a=b; return 1;} return 0;} mint pw(ll n) { mint ans=1,now=2; while(n>0){ if(n&1ll){ ans*=now; } n=n>>1; now*=now; } return ans; } int main(){ ll n,m; cin >> n >> m; if(n<m){ cout << 0 << endl; return 0; } mint ans=pw(n); mint nck=1; rep(i,m) { ans-=nck; nck*=(n-i); nck/=i+1; } cout << ans.val() << endl; return 0; }