欢迎光临散文网 会员登陆 & 注册

《编程思维与实践》1030.按整数最高位的值排序

2023-04-08 08:41 作者:风浅叶墨  | 我要投稿

题目

思路

用字符串读取,结构体存取十进制最高位数字和数本身的大小.

注意的点:

整数范围可能为10^18,应该用longlong存储.

代码

#include<stdio.h>
#include<stdlib.h>

typedef struct{int firstnumber;long long number;}Data;

int cmp(const void *a,const void *b)
{
    Data *m=(Data*)a;
    Data *n=(Data*)b;
    if(m->firstnumber!=n->firstnumber)
    {
        return n->firstnumber-m->firstnumber;
    }
    else{
        if(m->number>n->number){
            return 1;
        }
        else{
            return -1;
        }
    }
}

int main()
{
    int T;
    scanf("%d",&T);
    for(int i=0;i<T;i++)
    {
        int N;
        scanf("%d",&N);
        Data tab[N];
        char s[N][100]; 
        for(int j=0;j<N;j++)
        {
            scanf("%s",s[j]);
            tab[j].number=atoll(s[j]);
            tab[j].firstnumber=s[j][0]=='-'?s[j][1]-'0':s[j][0]-'0';  //跳过负号
        }           
        qsort(tab,N,sizeof(Data),cmp);
        printf("case #%d:\n",i);
        for(int j=0;j<N;j++)
        {
            printf("%lld ",tab[j].number);
        }
        printf("\n");
    }   
    return 0;
}


《编程思维与实践》1030.按整数最高位的值排序的评论 (共 条)

分享到微博请遵守国家法律