题解 | #数据分类处理#
数据分类处理
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")

