为什么排序还是按从小到大直接排的?
查看原帖
为什么排序还是按从小到大直接排的?
349824
WsW_花逝爆零人楼主2020/8/19 13:03
#include<bits/stdc++.h>
using namespace std;
int a[30],n;
int cd[30];
int qcd(int x){
	if(x==0)return 1;
	int sum=0;
	while(x>0){
		sum++;
		x/=10;
	}
	return sum;
}
bool cmp(int x,int y){
	int len=max(qcd(x),qcd(y));
	int l=pow(10,len-1);
	for(int i=0;i<len;i++){
		if(x/l%10<y/l%10)return true;
		if(x/l%10>y/l%10)return false;
		l/=10;
	}
	return true;
} 
int main(){
	int sum=0;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)scanf("%d",&a[i]);
	sort(a+1,a+1+n,cmp);
	for(int i=1;i<=n;i++)cd[i]=qcd(a[i]);
	for(int i=n;i>0;i--){
		sum+=a[i];
		sum*=pow(10,cd[i-1]);
	}
	printf("%d",sum);
	return 0;
} 
2020/8/19 13:03
加载中...