- 問題 https://atcoder.jp/contests/abc233/tasks/abc233_c
- AC https://atcoder.jp/contests/abc233/submissions/32504623
- 解説にmap解法がなかったので書いておく
code
int main(){ cin.tie(0); ios::sync_with_stdio(false); // input ll N,X; cin>>N>>X; map<ll,ll> mp; mp[1]=1; // 何もかけていない状態(数値1)は現在1通り rep(i,N){ ll L;cin>>L; map<ll,ll> mp2; rep(j,L){ ll a;cin>>a; for(auto pa : mp){ ll v = pa.first; ll cnt = pa.second; if((ld)v*a>X)continue; // 積がオーバーフローするものは除去 mp2[v*a] += cnt; } } mp=mp2; } p(mp[X]); return 0; }