60分求调
查看原帖
60分求调
905999
felixabc楼主2024/4/22 22:25
#include<bits/stdc++.h>
using namespace std;
int n,jlen;
string a[25];
int b[300];
int w[25][25];
int y[300];
int maxn[25],maxs[25];
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=n;i++){
		for(int j=0;j<a[i].size();j+=2){
			jlen=j;
			int c=(int)(a[i][j]),d=(int)(a[i][j+1]);
			if(c>=65){
				c-=55;
			}
			else{
				c-=48;
			}
			if(d>=65){
				d-=55;
			}
			else{
				d-=48;
		    }
		    c*=16;
			b[c+d]++;
			w[i][j/2]=c+d;
		}
	}
	for(int i=255;i>=0;i--){
		for(int j=15;j>=0;j--){
			if(b[i]>=maxs[j]){
				maxn[j+1]=maxn[j];
				maxn[j]=i;
				maxs[j+1]=maxs[j];
				maxs[j]=b[i];
			}
		}
	}
	for(int i=0;i<=15;i++){
		if(maxn[i]<16){
			cout<<"0"<<std::hex<<uppercase<<maxn[i];
		}
		else{
			cout<<std::hex<<uppercase<<maxn[i];
		}
	}
	cout<<endl;
	for(int i=1;i<=n;i++){
		for(int j=0;j<jlen/2+1;j++){
			int mins=2147483647,z=0;
			for(int l=15;l>=0;l--){
				if(max(maxn[l],w[i][j])-min(maxn[l],w[i][j])<mins){
					mins=max(maxn[l],w[i][j])-min(maxn[l],w[i][j]);
					z=l;
				}
				if(max(maxn[l],w[i][j])-min(maxn[l],w[i][j])==mins&&maxn[l]<maxn[z]){
					mins=max(maxn[l],w[i][j])-min(maxn[l],w[i][j]);
					z=l;
				}
			}
			cout<<std::hex<<uppercase<<z;
		}
		cout<<endl;
	}
}
2024/4/22 22:25
加载中...