求调!回者必关
查看原帖
求调!回者必关
1283023
liumoumou_haha楼主2025/2/8 17:33
#include<bits/stdc++.h>
using namespace std;
int n;
string z="0123456789ABCDEF";
struct stu
{
	int num,sl;
}b[1005];
int c_i(char c)
{
	if(c<='F'&&c>='A') return c-'A'+10;
	return c-'0';
}
int f(char x,char y)
{
	return c_i(x)*16+c_i(y)*1;
}
string e(int n)
{
	string s="";
	while(n!=0)
	{
		s+=z[n%16];
		n/=16;
	}
	string h;
	for(int i=s.size()-1;i>=0;i--) h+=s[i];
	return h;
}
bool cmp(stu a,stu b)
{
	if(a.sl>b.sl) return 1;
	else if(a.sl==b.sl)
	{
		if(a.num>b.num) return 1;
		else if(a.num<b.num) return 0;	
	}	
	else return 0; 
} 
string a[1005]; 
int main()
{
//	cin>>n;
//	cout<<e(n);
//	char x,y;
//	cin>>x>>y;
//	cout<<f(x,y);
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
		for(int j=0;j<a[i].size();j+=2)
		{
			b[f(a[i][j],a[i][j+1])].sl++;
//			cout<<a[i][j]<<" "<<a[i][j+1]<<" "<<f(a[i][j],a[i][j+1])<<" "<<b[f(a[i][j],a[i][j+1])].sl<<endl;
			b[f(a[i][j],a[i][j+1])].num=f(a[i][j],a[i][j+1]);
		}
	}
	sort(b,b+255,cmp);
	for(int i=0;i<16;i++)
	{
		cout<<e(b[i].num);	
	}
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<a[i].size();j++)
		{
			int tmp=f(a[i][j],a[i][j+1]);
			int mina=INT_MAX,mins=0;
			for(int k=0;k<16;k++)
			{
				if(b[k].num-tmp<mina)
				{
					mina=b[k].num-b[j].num;
					mins=k;
				}
			}
			string it=e(b[mins].num);
//			cout<<b[mins].num<<endl;
			a[i][j]=it[0];
			a[i][j+1]=it[1];
//			cout<<a[i][j]<<" "<<a[i][j+1]<<endl;
//			cout<<it<<endl;
		}
	}
	for(int i=0;i<n;i++)
	{
		cout<<a[i]<<endl;
	}
	return 0;
}
2025/2/8 17:33
加载中...