結果
問題 |
No.2206 Popcount Sum 2
|
ユーザー |
![]() |
提出日時 | 2023-02-03 16:24:47 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 774 bytes |
コンパイル時間 | 1,834 ms |
コンパイル使用メモリ | 197,292 KB |
最終ジャッジ日時 | 2025-02-10 08:33:07 |
ジャッジサーバーID (参考情報) |
judge3 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 4 TLE * 14 |
ソースコード
#include <bits/stdc++.h> using namespace std; #include <atcoder/modint> #define elif else if #define rep(i,n) for (int i=0;i<(n);i++) using mint=atcoder::modint998244353; vector<mint>pow2,fac,finv; mint binom(int n,int k){ if(n<0||k<0||k>n)return 0; return fac[n]*finv[k]*finv[n-k]; } int main(){ int N=200010; int mod=998244353; fac.resize(N); finv.resize(N); pow2.resize(N); fac[0]=1; for(int i=1;i<N;i++)fac[i]=fac[i-1]*i; finv[N-1]=1/fac[N-1]; for(int i=N-2;i>=0;i--)finv[i]=finv[i+1]*(i+1); pow2[0]=1; for(int i=1;i<N;i++)pow2[i]=pow2[i-1]*2; int T; cin>>T; for(int i=0;i<T;i++){ int n,m; cin>>n>>m; mint ans=0; for(int j=0;j<m;j++){ ans+=binom(n-1,j); } ans*=pow2[n]-1; cout<<ans.val()<<'\n'; } }