HLG 1644 比较多个大数的大小

原创 2013年12月02日 12:10:41

链接:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1644

题目大意:

本题有多组测试数据,每组测试数据占n+1行。
第一行输入一个数字n (1 ≤ n ≤ 100),表示正整数的个数,接下来n行每行输入一个正整数,每个正整数不超过10^100。

每组测试数据输出占n行,按照从小到大的顺序输出;


分析:比较多个大数的大小,首先想到要用字符串来表示每一个数,然后根据每个数的长度排序,长度相等的则比较每一个数字字符的大小;


解题代码如下:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;

typedef struct Node_ {
    char Num[1005];
    int len;
}Node;

Node N[105];

int cmp(const void *a, const void *b) {
    Node *p1 = (Node *)a;
    Node *p2 = (Node *)b;
    if(p1->len != p2->len) {
        return p1->len - p2->len;
    }else {
        return strcmp(p1->Num, p2->Num);
    }
}

int main() {
    int n;
    while(~scanf("%d", &n)) {
        for(int i=0; i<n; i++) {
            scanf("%s", N[i].Num);
            N[i].len = strlen(N[i].Num);
        }
        qsort(N, n, sizeof(N[0]), cmp);
        for(int i=0; i<n; i++) {
            printf("%s\n", N[i].Num);
        }
    }
    return 0;
}

后续解法待续。。。。


相关文章推荐

比较两个日期大小和获取当前月最大天数的存储过程

下面简单介绍sqlserver2008两个常用的存储过程 1、比较两个日期大小的存储过程 2、获取当前月份的最大天数的存储过程 1、创建比较两个日期大小的存储过程 1)创建比较两个日期大...

cf(思维题,判断两个大数的大小的比较方法)

C. The Big Race time limit per test 1 second memory limit per test 256 megabytes in...

比较大数的大小(10**6) c++ python

A. Comparing Two Long Integers time limit per test 2 seconds memory limit per test 256 megabytes inp...

HLG 1038 菜鸟和大牛(数塔问题 简单DP)

菜鸟和大牛 点击打开题目链接 Time Limit: 1000 MS Memory Limit: 65536 K Total Submi...

HLG 2163 方格取数 (最大网络流)

题目链接:  点击打开链接 Description : 给你一个n*n的格子的棋盘,每个格子里面有一个非负数。现在从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取的数...

HLG 1293 取数 二分

取数 Time Limit: 1000 MS Memory Limit: 65536 K Total Submit: 333(69 users) Total Accepted:...

HLG 1004 The Triangle(数塔问题DP)

The Triangle 点击打开题目链接 Time Limit: 1000 MS Memory Limit: 65536 K Tota...

小乐乐大逃亡HLG

 小乐乐大逃亡 Time Limit: 1000 MS Memory Limit: 32768 K   ...

多个五角星 颜色大小不一样

  • 2015年04月27日 15:16
  • 1.87MB
  • 下载

三元运算符 比较三个数大小 三元操作符的类型务必一致

class JavaApplication1    { public static void main(String[] args)  {   int x = 10,y; i...
  • vimmiv
  • vimmiv
  • 2016年05月20日 13:44
  • 1781
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HLG 1644 比较多个大数的大小
举报原因:
原因补充:

(最多只允许输入30个字)