Description
给出N(<=1000)个不超过1000位的整数,然后将他们由小到大输出!
Input
第 1 行,一个整数N,接下来的N行,每行一个高精度数。
Output
共 N 行,每行一个高精度数,并由小到大输出。
Hint
N<=1000
Solution
板子,简单到我不能逼逼的那种板子。。
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#define maxn 1005
using namespace std;
int a[maxn][maxn];
int n,cnt;
char ttmp[maxn],tmp[maxn];
struct data{
int a[maxn];
friend bool operator < (data x,data y){
if(x.a[0]>y.a[0])return false;
if(x.a[0]<y.a[0])return true;
for(int i=x.a[0];i>=1;i--){
if(x.a[i]<y.a[i])return true;
if(x.a[i]>y.a[i])return false;
}
}
}aa[maxn];
void init(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%s",ttmp);
aa[i].a[0]=strlen(ttmp);
for(int k=0;k<aa[i].a[0];k++){
if(ttmp[k]!='0'){
cnt=k;
break;
}
}
for(int q=cnt,j=0;q<=aa[i].a[0];q++,j++){
tmp[j]=ttmp[q];
}
aa[i].a[0]=strlen(tmp);
for(int u=1,j=aa[i].a[0]-1;u<=aa[i].a[0];u++,j--){
aa[i].a[u]=tmp[j]-'0';
}
if(aa[i].a[0]==0)aa[i].a[0]=1;
}
}
int main(){
init();
sort(aa+1,aa+1+n);
for(int i=1;i<=n;i++){
for(int j=aa[i].a[0];j>=1;j--){
printf("%d",aa[i].a[j]);
}
printf("
");
}
return 0;
}