您好,欢迎来到百家汽车网。
搜索
您的当前位置:首页hi.拼数

hi.拼数

来源:百家汽车网

拼数

题目描述

设有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 <iostream>
// #include <algorithm>
// #include <cstring>
// #include <stack>//栈
// #include <deque>//堆/优先队列
// #include <queue>//队列
// #include <map>//映射
// #include <unordered_map>//哈希表
// #include <vector>//容器,存数组的数,表数组的长度
#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;
    //cin>>t;
    while(t--) solve();
    
    return 0;
}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baijiahaobaidu.com 版权所有 湘ICP备2023023988号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务