单点时限: 1.0 sec
内存限制: 256 MB
我想和你在一起
直到我不爱你
宝贝 人和人 一场游戏
我愿意为你死去
如果我还爱你
宝贝 反正活着 也没意义
宝贝 我也只能 这样为你
——李志《和你在一起》
现场4分10秒,小哥跟着逼哥嘶吼,泪流满面。我要和你在一起,直到我不爱你。有这么 n 个数字,联成一排拼到一起便是我爱你的时间,那么我们会在一起多久呢
例如: n=3 时,3 个整数 13,312,343 联接成的最长时间为: 34331213。
又如: n=4 时,4 个整数 7,13,4,246 联接成的最长时间为: 7424613。
输入格式
n (1≤n≤20),表示 n 个数。
接下来一行 n 个正整数,大小不超过 104。
输出格式
拼成的最长时间。
样例
input
3 623 583 413output
623583413
关于笔者想不到好方法对比字节序,就试图【往短的数后面添0】这件事....
可以说菜的真实了=.=
不过这个思路倒是很好想啊,虽然看着代码量多,出奇的几分钟就AC了~
#include <iostream>
#include <bits/stdc++.h>
#include <math.h>
using namespace std;
// 字典序排序
bool cmp(int a, int b) {
int A=a, B=b;
int Acnt, Bcnt = 0;
while(a>=10){
a/=10;Acnt++;
}
while(b>=10){
b/=10;Bcnt++;
}
int abscnt = abs(Acnt-Bcnt);
if(Acnt > Bcnt){
while(abscnt--){
B=B*10;
}
}
if(Acnt < Bcnt){
while(abscnt--){
A=A*10;
}
}
return A>B ;
}
int main() {
vector<int> iarray;
int nums, temp;
cin >> nums;
for (int i = 0; i < nums; i++) {
cin >> temp;
iarray.insert(iarray.end(), temp);
}
sort(iarray.begin(), iarray.end(), cmp);
for (int i = 0; i < nums; i++) {
cout << iarray[i];
}
}
我觉得这也是一种自信~!