C - Product (atcoder.jp)
#include <bits/stdc++.h>
#define long long int
using namespace std;
int n,x;
int total=0;
vector<vector<int> > vec;
void dfs(int pos,int pro){
//位置,乘积
if(pos==(n+1)){
if(pro==x){
total++;
}
return ;
}
for(int i=1;i<vec[pos].size();i++){
int c=vec[pos][i];
if(c>x/pro||x%c!=0){
continue;
}
dfs(pos+1,pro*c);
}
return ;
}
signed main(){
cin>>n>>x;
vec.resize(n+1);
int l;
for(int i=1;i<=n;i++){
cin>>l;
vec[i].resize(l+1);
for(int j=1;j<=l;j++){
cin>>vec[i][j];
}
}
dfs(1,1);
cout<<total<<endl;
return 0;
}