IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 【PAT (Basic Level) Practice】——【字符串处理】1100 校庆 -> 正文阅读

[数据结构与算法]【PAT (Basic Level) Practice】——【字符串处理】1100 校庆

一【题目难度】

  • 乙级

二【题目编号】

  • 1100 校庆 (25 分)

三【题目描述】

  • 2019 年浙江大学将要庆祝成立 122 周年。为了准备校庆,校友会收集了所有校友的身份证号。现在需要请你编写程序,根据来参加校庆的所有人士的身份证号,统计来了多少校友。

四【题目示例】

  • 输入格式:
    输入在第一行给出不超过 1 0 5 10^5 105 的正整数 N,随后 N 行,每行给出一位校友的身份证号(18 位由数字和大写字母X组成的字符串)。题目保证身份证号不重复。
    随后给出前来参加校庆的所有人士的信息:首先是一个不超过 1 0 5 10^5 105的正整数 M,随后 M 行,每行给出一位人士的身份证号。题目保证身份证号不重复。

  • 输出格式:
    首先在第一行输出参加校庆的校友的人数。然后在第二行输出最年长的校友的身份证号 —— 注意身份证第 7-14 位给出的是 yyyymmdd 格式的生日。如果没有校友来,则在第二行输出最年长的来宾的身份证号。题目保证这样的校友或来宾必是唯一的。

  • 输入样例:
    5
    372928196906118710
    610481197806202213
    440684198612150417
    13072819571002001X
    150702193604190912
    6
    530125197901260019
    150702193604190912
    220221196701020034
    610481197806202213
    440684198612150417
    370205198709275042

  • 输出样例:
    3
    150702193604190912

五【解题思路】

  • 首先我们要理清题意,我们需要一个函数帮助我们从身份证号中提取出生日期,另外既然需要匹配有多少人出席了,所以我们使用二分查找,那么也就需要一个排序函数。然后我们需要处理输入数据,两组数据的处理过程基本相同,我们都需要找出生日最小的(年龄最大)人,然后存储,只是第二个处理过程中我们还要注意记录出席的校友人数。另外还需要注意要使用 g e t c h a r ( ) getchar() getchar()函数吸收多余的换行符,因为我们扫描输入是字符串。最后只需要分两种情况输出:
    ①:如果有校友出席,输出校友中最年长的
    ②:如果没有校友出席,输出出席人中最年长的

六【最终得分】

  • 25分

七【代码实现】

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

int getTime(char* a)
{
    int res = 0;
    for(int i = 6;i<=13;i++)
    {
        res = res * 10 + a[i] - '0';
    }
    return res;
}

int cmp_1100_SchoolCelebration(const void *a,const void *b)
{
    char* x = (char *)a;
    char* y = (char *)b;
    return strcmp(x,y);
}

int main()
{
    int n,m,count = 0,minBirth1 = 100000000,minBirth2 = 100000000;
    long long int id1,id2;
    char id[20],SchoolMate[100000][20];
    scanf("%d",&n);
    getchar();
    for(int i = 0;i<n;i++)
    {
        scanf("%s",SchoolMate[i]);
        getchar();
        minBirth1 = (minBirth1 < getTime(SchoolMate[i])) ? minBirth1 : getTime(SchoolMate[i]);
        id1 = (minBirth1 == getTime(SchoolMate[i])) ? atol(SchoolMate[i]) : id1;
    }
    qsort(SchoolMate,n,sizeof(char)*20,cmp_1100_SchoolCelebration);
    scanf("%d",&m);
    getchar();
    while(m--)
    {
        scanf("%s",id);
        getchar();
        if(bsearch(id,SchoolMate,n,sizeof(char)*20,cmp_1100_SchoolCelebration))
        {
            count++;
        }
        minBirth2 = (minBirth2 < getTime(id)) ? minBirth2 : getTime(id);
        id2 = (minBirth2 == getTime(id)) ? atol(id) : id2;
    }
    printf("%d\n",count);
    if(count != 0)
    {
        printf("%lld",id1);
    }
    else
    {
        printf("%lld",id2);
    }
    return 0;
}

八【提交结果】

在这里插入图片描述

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 00:19:45  更:2022-04-01 00:20:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:35:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码