解题思路:这种多个数找,直接结构体然后sort排序大小,比较快

注意事项: 年月日一样的话,要按身份证号大小排(题上没说容易忽略)

参考代码:

#include<cstdio>

#include<algorithm>

using namespace std;

const int maxn=100010;


struct Date

{

         long long shenfen = 0;

         int nian = 0;

         int yue = 0;

         int ri = 0;

}date[maxn];


bool cmp(Date a, Date b)

{

             if (a.nian != b.nian)return a.nian > b.nian;

             else if (a.yue != b.yue)return a.yue > b.yue;

             else if (a.ri != b.ri) return a.ri > b.ri;

             else return a.shenfen > b.shenfen;             //依次比较年月日大小,如果都一样则按身份证号大小依次排,题上没说容易忽略

}


int main()

{

     long long  a=0, b=0, c=1, d=8;

     long long ci = 0;

     scanf("%lld",&ci);

     while (ci--)

     {

             scanf("%lld", &date[a].shenfen);

             date[a].nian = date[a].shenfen % 1000000000000 / 100000000;

             date[a].yue = date[a].shenfen % 100000000 / 1000000;

             date[a].ri = date[a].shenfen % 1000000 / 10000;

             a++;

     }

    

     sort(date,date+a,cmp);

    

     for (int i = 0; i<a; i++)

     {

          printf("%lld\n", date[i].shenfen);

     }

     return 0;

}


 

0.0分

13 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区