拼数
题目描述
设有n个正整数(n ≤ 20),将它们联接成一排,组成一个最大的多位整数。
例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213
又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613
输入描述
第一行,一个正整数n。
第二行,n个正整数。
输出描述
一个正整数,表示最大的整数
示例1
输入
3
13 312 343
输出
34331213
示例2
输入
20
921650139 925571586 931563581 923960668 870548039 358493469 371229218 737101511 514654859 185379933 19421244 117259400 301947570 48520742 79303948 222979736 153546206 250582036 106394401 198125223
输出
9315635819255715869239606621650139870548039793039487371015115146548594852074237122921835849346930194757025058203622297973619812522319421244185379933153546206117259400106394401
说明
本样例为牛客补充,非原始题目数据。此样例也添加到了本题的测试数据。
2023/1/16添加,之前的提交不进行重测。
Code
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
typedef long long ll;
const ll N=2e1+10;
string a[N];
bool cmb(string a,string b)
{
return a+b>b+a;
}
void solve()
{
ll n;
cin>>n;
for(ll i=0;i<n;i++) cin>>a[i];
sort(a,a+n,cmb);
for(ll i=0;i<n;i++) cout<<a[i];
cout<<endl;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
ll t=1;
while(t--) solve();
return 0;
}