10分求大佬指点
#include<bits/stdc++.h>
using namespace std;
string a[25],b,e;
long long n,c[260],d[260],ma,ma1,d1=0;
string szsl(long long x){
string s="",s1="";
if(x==0)s="00";
while(x>0){
if(x%16<=9)s+=char(x%16+48);
else s+=char(x%16+55);
x/=16;
}
for(int i=s.size()-1;i>=0;i--){
s1+=s[i];
}
if(s1.size()<2)s1='0'+s1;
return s1;
}
long long slzs(string x){
long long s=0;
for(int i=0,j=x.size()-1;i<x.size();i++,j--){
if(x[i]<='9')s+=pow(16,j)*(x[i]-'0');
else s+=pow(16,j)*(x[i]-55);
}
return s;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=0;i<=255;i++)d[i]=-1;
for(int i=1;i<=n;i++){
b=a[i];
for(int j=0;j<b.size();j+=2){
e="";
e+=b[j];
e+=b[j+1];
c[slzs(e)]++;
}
}
d1=0;
for(int i=1;i<=16;i++){
for(int j=0;j<=255;j++){
if(d[j]==-1&&c[j]>ma){
ma=c[j],ma1=j;
}
}
cout<<szsl(ma1);
d[ma1]=d1,ma=0,d1++;
}
cout<<endl;
for(int i=1;i<=n;i++){
b=a[i];
for(int j=0;j<b.size();j+=2){
e="";
e+=b[j];
e+=b[j+1];
if(d[slzs(e)]!=-1){
if(d[slzs(e)]<=9)cout<<d[slzs(e)];
else cout<<char(d[slzs(e)]+55);
}
else{
for(int k=slzs(e)-1,r=slzs(e)+1;k<r;k--,r++){
if(d[k]!=-1){
if(d[k]<=9)cout<<d[k];
else cout<<char(d[k]+55);
break;
}
if(d[r]!=-1){
if(d[r]<=9)cout<<d[r];
else cout<<char(d[r]+55);
break;
}
}
}
}
cout<<endl;
}
return 0;
}