题解 | #数据分类处理#
数据分类处理
https://www.nowcoder.com/practice/9a763ed59c7243bd8ab706b2da52b7fd
#include <iostream> #include <sys/types.h> #include <type_traits> #include <vector> #include <algorithm> #include <string.h> #include <string> #include <cstdlib> #include <map> using namespace std; map<int,int> countt; vector<int>ans; bool judge(int n,int target) { string a=to_string(n); string b=to_string(target); if(strstr(a.c_str(),b.c_str())) return true; return false; } int main() { int a; int sum=0; cin>>a; int temp; vector<int> v1; for(int i=0;i<a;i++) { cin>>temp; v1.push_back(temp); } int b; cin>>b; vector<int> v2; for(int i=0;i<b;i++) { cin>>temp; v2.push_back(temp); } sort(v2.begin(),v2.end()); for(int i=0;i<b;i++) { while(v2[i+1]==v2[i]) i++; for(int j=0;j<a;j++) { if(judge(v1[j],v2[i])) { countt[v2[i]]++; ans.push_back(j); ans.push_back(v1[j]); } } } for(int i=0;i<countt.size();i++) if(countt[i]!=0) sum++; cout<<ans.size()+sum*2<<" "; int c=0; for(int i=0;i<countt.size();i++) { if(countt[i]!=0) { cout<<i<<" "<<countt[i]<<" "; for(int j=0;j<countt[i];j++) cout<<ans[c+2*j]<<" "<<ans[c+2*j+1]<<" "; c=c+countt[i]*2; } } } // 64 位输出请用 printf("%lld")