样例能过,全re,求助
查看原帖
样例能过,全re,求助
1239076
eternal_qn楼主2024/11/23 12:00
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int n,l=0;
string a[45],b[45];
struct ww{
	int t;//值 
	int w;//次数 
}ar[290];

bool cmp(ww ar,ww r){
	return r.w<ar.w; 
}

int f(char x,char y){
	int r=0;
	if(y>'9') r+=y-'A'+10;
	else r+=y-'0';
	if(x>'9') r+=16*(x-'A'+10);
	else r+=16*(x-'0');
	return r;
}


int main() {
	for(int i = 0;i<280;i++) ar[i].t=i;
	cin>>n;
	for(int i = 0;i<=n;i++){
		getline(cin,a[i]);
		
	}
	l=a[1].size();
//	cout<<l;
	for(int i = 1;i<=n;i++){
		for(int j = 0;a[i][j];j+=2){
			char x=a[i][j],y=a[i][j+1];
//			cout<<x<<y<<" ";
			ar[f(x,y)].w++;
		}
		
	}
	stable_sort(ar,ar+256,cmp);
//	for(int i = 0;i<256;i++){
//		cout<<ar[i].w<<" ";
//	}
	
	//	for(int i = 0;i<=255;i++){
	//		cout<<ar[i]<<" ";
	//		
	//	}
	
	for(int i = 0;i<16;i++){
		printf("%02X",ar[i].t);
	}
	///////////////////////////////////
	cout<<endl;
	int ff=0,min=9999,k=0;
	char x='\0',y='\0';
	for(int i = 1;i<=n;i++){
		for(int j = 0;a[i][j];j+=2){
			x=a[i][j],y=a[i][j+1];
//			cout<<x<<y<<" ";
			ff= f(x,y),min=9999,k=0;
			for(int kk = 0;kk<16;kk++){
				if(abs(ar[kk].t-ff)<min) {
					min=abs(ar[kk].t-ff);
					k=kk;
				}
			}
			b[i]+=(k>9)?(k+'A'-10):(k+'0');
		}
		
	}
	
	for(int i = 1;i<=n;i++){
		cout<<b[i]<<endl;
		
	}
	return 0;
}
2024/11/23 12:00
加载中...