#include <iostream> #include <vector> #include <set> using namespace std; // 判断 i 是否包含 r bool check(int i, int r) { int digit = 1; while(r / digit != 0) { digit *= 10; // digit表示 r 的位数, 例如 r = 34,则digit = 100; r = 123, digit = 1000 } while(i * 10 / digit != 0) { int k = i % digit; if(k == r) { return true; } i = i / 10; } return false; } int main() { int m, n; while(cin >> m) { vector<int> output; output.push_back(0); // 预留出第一个位置用于存放个数 vector<int> I; set<int> R; for (int i = 0; i < m; i++) { int a; cin >> a; I.push_back(a); } cin >> n; for (int i = 0; i < n; i++) { int b; cin >> b; R.insert(b); } for (set<int>::iterator it = R.begin(); it != R.end(); it++) { int num = 0; vector<int> v; for (int i = 0; i < I.size(); i++) { if (check(I[i], (*it))) { num++; v.push_back(i); // 下标 v.push_back(I[i]); // 对应的下标数据 } } if (num > 0) { output.push_back(*it); // R中的数据 output.push_back(num); // I中满足数据的个数 for (int i = 0; i < v.size(); i++) { output.push_back(v[i]); } } } output[0] = output.size() - 1; for (int j = 0; j < output.size()-1; j++) { cout << output[j] << " "; } cout << output[output.size() - 1] << endl; } return 0; }