Product
問題
C – Product
プログラミング初級者から上級者まで楽しめる、競技プログラミングコンテストサイト「AtCoder」。オンラインで毎週開催プログラミングコンテストを開催しています。競技…
記録
- 2022/04/23 dfsが実装できず。
- 2021/12/25 リアルタイム参加。再帰が思いつかずなんとかゴリ押してAC。
解法
- 再帰(DFS)で全パターン試す。
コード例
#include <bits/stdc++.h> using namespace std; #include <atcoder/all> using namespace atcoder; using ll = long long; using P = pair<int, int>; #define rep(i, n) for(int i = 0; i < (n); ++i) // using mint = modint998244353; // using mint = modint1000000007; // const int mod = 1000000007; // const ll INF = 1LL << 60; // const int INF = 1001001001; ll N, X; vector<vector<ll>> a; ll ans; void dfs(ll pos, ll current) { if(pos == N) { if(current == X) { ans++; } return; } for(auto i : a[pos]) { if(X / i < current) { continue; } dfs(pos + 1, current * i); } return; } int main() { cin >> N >> X; a.resize(N); rep(i, N) { int L; cin >> L; rep(j, L) { int a_; cin >> a_; a[i].push_back(a_); } } dfs(0, 1); cout << ans << endl; return 0; }