高精度排序模板题 P1110

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("\n");
    }
    return 0;
}

转载于:https://www.cnblogs.com/virtual-north-Illya/p/10045120.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值