身份证排序

xiaoxiao2021-02-28  157

题目描述

安全局搜索到了一批(n个)身份证号码,希望按出生日期对它们进行从大到小排序,如果有相同日期,则按身份证号码大小进行排序。身份证号码为18位的数字组成,出生日期为第7到第14位

输入

第一行一个整数n,表示有n个身份证号码 余下的n行,每行一个身份证号码。

输出

按出生日期从大到小排序后的身份证号,每行一条

样例输入

5466272307503271156215856472207097978234804580401078365404475727700034980710351408803093165

样例输出

404475727700034980234804580401078365215856472207097978710351408803093165466272307503271156

提示

数据规模和约定

n<=100000

#include<stdio.h> #include <algorithm> #include <iostream> #include <string.h> using namespace std; int cmp(string a,string b) { string a1=a.substr(6,8); string b1=b.substr(6,8); if(a1==b1) return a>b; else return a1>b1; } int main() { int i,n; scanf("%d",&n); //cin>>n; string str[n]; for(i=0;i<n;i++) cin>>str[i]; sort(str,str+n,cmp); for(i=0;i<n;i++) cout<<str[i]<<endl; return 0; }

转载请注明原文地址: https://www.6miu.com/read-40083.html

最新回复(0)