简直就是板子题!(容器要好好的调教啊~~~不然会sf)我的第一次hh
#include<bits/stdc++.h> //超大的数据量,不要overflow!!
using namespace std;
typedef long long LL;
typedef long long ll; //别忘了!
LL n, x;
LL ans;
vector<vector<LL>> a; //二维数组。。
void dfs(LL u, LL s)
{
if(u == n) //循环层数
{
if(s == x) //找到符合答案的一种方法
ans ++;
return;
}
for(auto c : a[u]) //遍历整个第u层
{
if(s > x / c) //防止越界
continue;
dfs(u + 1, s * c); //u自己并未发生改变,所以不用-1.
}
}
int main()
{
cin >> n >> x;
a.resize(n); //!!!!!!!!!!!!!! 防止sf
for(ll i = 0; i < n; i ++)
{
LL l; cin >> l;
a[i].resize(l); //!!!!!!!!!!!!!!!!!防止sf
for(ll j = 0; j < l;j ++) cin >> a[i][j];
}
dfs(0, 1);
cout<< ans <<endl;
return 0;
}
咦~好好调教(dog)