样例过了,0分,求解
查看原帖
样例过了,0分,求解
759120
luogu_MeiFengqi楼主2024/1/27 11:53
#include<bits/stdc++.h>
using namespace std;
int n;
string s;
int a[50][50];
int b[256];
int z_ten(string px)
{
	int ss=0;
	if(px[1]>='A') ss+=px[1]-55;
	else ss+=px[1]-'0';
	if(px[0]>='A') ss+=(px[0]-55)*16;
	else ss+=(px[0]-'0')*16;
	return ss;
}
string z_six(int l)
{
	int aa,bb;
	aa=l%16;
	l/=16;
	bb=l%16;
	char a1,b1;
	if(aa>9) a1=char(aa+55);
	else a1=char(aa+'0');
	if(bb>9) b1=char(bb+55);
	else b1=char(bb+'0');
	string jkl="";
	jkl=jkl+b1+a1;
	return jkl;
}
struct st{
	int fj;//十进制数 
	int cnt;//次数 
	char xs;//现在编号 
}u[1000];
bool cmp(st qq,st pp)
{
	if(qq.cnt!=pp.cnt)
	return qq.cnt > pp.cnt;
	else return qq.fj < pp.fj;
}
bool cmpx(st qq,st pp)
{
	return qq.fj < pp.fj;
}
int main()
{
	int n,j=1;
	cin >> n;
	int l;
	for(int i=1;i<=n;i++)
	{
		cin >> s;
		l=s.size();
		for(int j=0;j<l;j+=2)
		{
			string lp="";
			lp=lp+s[j]+s[j+1];
			a[i][j/2+1]=z_ten(lp);
			b[z_ten(lp)]++;
		}
	}
	int u_size=0;
	for(int i=0;i<=255;i++)
	{
		if(b[i]!=0)
		{
			u[++u_size].cnt=b[i];
			u[u_size].fj=i;
		}
	}
	sort(u+1,u+u_size+1,cmp);
	for(int i=1;i<=16;i++)
	{
		cout << z_six(u[i].fj); 
		if(i<=10) u[i].xs = i+'0'-1;
		else u[i].xs = i+'0'+6;
	}
	cout << endl;
	u_size=16;
	sort(u+1,u+u_size+1,cmpx);
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=l/2;j++)
		{
			for(int k=2;k<=u_size;k++)
			{
				if(u[k].fj>=a[i][j])
				{
					if(abs(u[k].fj-a[i][j])>abs(u[k-1].fj-a[i][j])) cout << u[k-1].xs;
					else cout << u[k].xs;
					break;
				}
			}
		} 
		cout << endl;
	}
	return 0;
}

#求大lao相助

2024/1/27 11:53
加载中...