祖传打模拟。
需要考虑R数组的去重和排序,然后仔细阅读题意即可。
#include <bits/stdc++.h> #include <string> #include <vector> using namespace std; vector<int> l; vector<int> r; vector<int> ans; int main() { int n, m; int a; cin >> n; for (int i = 0; i < n; i++) { cin >> a; l.push_back(a); } cin >> m; for (int j = 0; j < m; j++) { cin >> a; r.push_back(a); } sort(r.begin(), r.end()); r.erase(unique(r.begin(), r.end()), r.end()); for (int i = 0; i < r.size(); i++) { bool find = false; vector<int> tmp; for (int k = 0; k < l.size(); k++) { if (to_string(l[k]).find(to_string(r[i])) != to_string(l[k]).npos) { find = true; tmp.push_back(k); tmp.push_back(l[k]); } } if (find) { ans.push_back(r[i]); ans.push_back(tmp.size()/2); for (auto item : tmp) ans.push_back(item); } } cout << ans.size() << " "; for(int item: ans) cout << item << " "; return 0; } // 64 位输出请用 printf("%lld")