zoukankan      html  css  js  c++  java
  • 1190.大整数排序

    题目描述:

    对N个长度最长可达到1000的数进行排序。

    输入:

    输入第一行为一个整数N,(1<=N<=100)。
    接下来的N行每行有一个数,数的长度范围为1<=len<=1000。
    每个数都是一个正数,并且保证不包含前缀零。

    输出:

    可能有多组测试数据,对于每组数据,将给出的N个数从小到大进行排序,输出排序后的结果,每个数占一行。

    样例输入:
    3
    11111111111111111111111111111
    2222222222222222222222222222222222
    33333333
    样例输出:
    33333333
    11111111111111111111111111111
    2222222222222222222222222222222222

    #include <stdio.h>
    #include <string.h>
    #include <algorithm>
    using namespace std;
    const int MAX = 1000;
    struct BigInteger
    {
        int digit[MAX];
        int size;
        void init() {
            for (int i = 0;i < MAX;i++) {
                digit[i] = 0;
            }
            size = 0;
        }
        void set(char str[]) {
            init();
            int L = strlen(str);
            for (int i = L - 1, j = 0, t = 0, c = 1;i >= 0;i--) {
                t += (str[i] - '0')*c;
                j++;
                c *= 10;
                if (j == 4 || i == 0) {
                    digit[size++] = t;
                    j = 0;t = 0;c = 1;
                }
            }
        }
        void output() {
            for (int i = size - 1;i >= 0;i--) {
                if (i != size - 1) {
                    printf("%04d", digit[i]);
                }
                else {
                    printf("%d", digit[i]);
                }
            }
            printf("
    ");
        }
        bool operator < (const BigInteger A) const
        {
            if (size != A.size)
            {
                return size < A.size;
            }
            else
            {
                for (int i = size - 1; i >= 0; i--)
                {
                    if (digit[i] != A.digit[i])
                    {
                        return digit[i] < A.digit[i];
                    }
                }
            }
        }
     
     
    }E[100];
     
    char str[1000];
    int main()
    {
        int n;
        while (scanf("%d", &n) != EOF) {
            for(int i =0;i<n;i++) {
                scanf("%s", str);
                E[i].set(str);
            }
            sort(E, E + n);
            for (int i = 0;i<n;i++) {
                E[i].output();
            }
        }
        return 0;
    }
  • 相关阅读:
    __name__在调用时的区别
    Python内置模块--os模块的使用
    查询mysql 表的元数据信息
    nfs服务搭建
    jvm参数设置
    spring boot 集成 beetl
    spring boot 集成 swagger2 四部曲
    JavaScript中的this关键字
    jQuery 基础事件
    jQuery 表单选择器
  • 原文地址:https://www.cnblogs.com/bernieloveslife/p/9735260.html
Copyright © 2011-2022 走看看