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;
    }
  • 相关阅读:
    html框架
    head标签
    项目报错,tomcat中引起
    Eclipse中点击小猫提示Tomcat settings should be set in Tomcat Preference Page
    同一台电脑上安装两个tomcat服务器
    Java排序算法
    格式化系统日期
    九九乘法表
    Java实现给定字符串的倒序输出
    Eclipse警告:The serializable class XXX does not declare a static final serialVersionUID field of type long
  • 原文地址:https://www.cnblogs.com/bernieloveslife/p/9735260.html
Copyright © 2011-2022 走看看