1100 校庆

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

输入格式:

输入在第一行给出不超过 105 的正整数 N,随后 N 行,每行给出一位校友的身份证号(18 位由数字和大写字母X组成的字符串)。题目保证身份证号不重复。

随后给出前来参加校庆的所有人士的信息:首先是一个不超过 105 的正整数 M,随后 M 行,每行给出一位人士的身份证号。题目保证身份证号不重复。

输出格式:

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

输入样例:

5
372928196906118710
610481197806202213
440684198612150417
13072819571002001X
150702193604190912
6
530125197901260019
150702193604190912
220221196701020034
610481197806202213
440684198612150417
370205198709275042

输出样例:

3
150702193604190912

C:

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

using namespace std;

int n, m;
set<string> S, S2;
char temp[20], smallx[20] = "99999999", smalla[20] = "99999999", ansx[20], ansa[20];

int main()
{
    int cnt = 0;
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
    {
        scanf("%s", temp);
        S.insert(temp);
    }
    scanf("%d", &m);
    for (int i = 0; i < m; i++)
    {
        scanf("%s", temp);
        S2.insert(temp);
        if (S.count(temp))
        {
            cnt++;
            if (strcmp(smallx, temp + 6) > 0)
            {
                strcpy(smallx, temp + 6);
                strcpy(ansx, temp);
            }
        }
        if (strcmp(smalla, temp + 6) > 0)
        {
            strcpy(smalla, temp + 6);
            strcpy(ansa, temp);
        }
    }
    printf("%d\n", cnt);
    if (cnt)
    {
        printf("%s", ansx);
    }
    else
    {
        printf("%s", ansa);
    }
    return 0;
}

C++:

#include <bits/stdc++.h>
using namespace std;

int n,m;
set<string> S,S2;
string temp,smallx="99999999",smalla="99999999",ansx,ansa;

int main()
{
	int cnt=0;
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		cin>>temp;
		S.insert(temp);
	}
	scanf("%d",&m);
	for(int i=0;i<m;i++)
	{
		cin>>temp;
		S2.insert(temp);
		if(S.count(temp))
		{
			cnt++;
			if(smallx>temp.substr(6,8))
			{
				smallx=temp.substr(6,8);
				ansx=temp;
			}
		}
		if(smalla>temp.substr(6,8))
		{
            smalla=temp.substr(6,8);
            ansa=temp;
    	}
	}
	cout<<cnt<<endl;
    if(cnt)
	{
    	cout<<ansx;
	}
    else
	{
    	cout<<ansa;
	}
	return 0;
}

Java:

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        Set<String> S = new HashSet<>();

        for (int i = 0; i < n; i++) {
            String temp = scanner.next();
            S.add(temp);
        }

        int m = scanner.nextInt();
        Set<String> S2 = new HashSet<>();
        String smallx = "99999999";
        String smalla = "99999999";
        String ansx = "";
        String ansa = "";

        for (int i = 0; i < m; i++) {
            String temp = scanner.next();
            S2.add(temp);
            if (S.contains(temp)) {
                if (smallx.compareTo(temp.substring(6, 8)) > 0) {
                    smallx = temp.substring(6, 8);
                    ansx = temp;
                }
            }
            if (smalla.compareTo(temp.substring(6, 8)) > 0) {
                smalla = temp.substring(6, 8);
                ansa = temp;
            }
        }

        int cnt = 0;
        for (String temp : S2) {
            if (S.contains(temp)) {
                cnt++;
            }
        }

        System.out.println(cnt);
        if (cnt > 0) {
            System.out.println(ansx);
        } else {
            System.out.println(ansa);
        }
    }
}

Python:

n = int(input())
S = set()
for _ in range(n):
    temp = input()
    S.add(temp)

m = int(input())
S2 = set()
smallx = "99999999"
smalla = "99999999"
ansx = ""
ansa = ""

for _ in range(m):
    temp = input()
    S2.add(temp)
    if temp in S:
        if smallx > temp[6:8]:
            smallx = temp[6:8]
            ansx = temp
    if smalla > temp[6:8]:
        smalla = temp[6:8]
        ansa = temp

cnt = len(S2.intersection(S))

print(cnt)
if cnt > 0:
    print(ansx)
else:
    print(ansa)

总结:

        首先,定义了一些变量,包括整数变量 n 和 m,两个集合 S 和 S2,以及一些字符串变量。
        通过 scanf 从输入中读取一个整数 n,表示要读取的字符串数量。然后,使用一个循环读取 n 个字符串,并将它们插入到集合 S 中。
        接下来,通过 scanf 再次从输入中读取一个整数 m,表示要读取的另一个字符串数量。然后,使用一个循环读取 m 个字符串,并将它们插入到集合 S2 中。
        在读取过程中,首先检查当前读取的字符串是否存在于集合 S 中。如果存在,将 cnt 变量加一,并检查它的子字符串的某个部分是否比之前的最小值要小。如果是,则更新最小值和相应的字符串。
        在循环结束后,输出 cnt 的值,表示存在于集合 S 和集合 S2 中共有多少个相同的字符串。
        根据 cnt 的值,决定输出结果。如果 cnt 大于 0,则输出之前找到的具有最小子字符串值的字符串 ansx;否则,输出具有最小子字符串值的字符串 ansa。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1100的校庆是一个非常值得庆祝的时刻,而C语言是一个非常重要的编程语言。C语言是一种通用的高级计算机编程语言,具有简洁、灵活、高效的特点。它被广泛应用于操作系统、嵌入式系统、游戏开发、数据库管理等领域。 C语言的发展与1100校庆的意义相互呼应。正如1100校庆所代表的丰硕成果和不断突破的精神一样,C语言也在过去几十年里不断发展和创新,为计算机和软件领域做出了巨大贡献。 C语言对于1100校庆来说,具有以下几方面的重要性: 首先,C语言是计算机专业教育中的一门重要课程。作为一门基础的编程语言,学习C语言可以帮助学生培养程序设计的思维方式和解决问题的能力。 其次,C语言也是学生们进行科学研究和开发实践的得力工具。通过掌握C语言,学生们可以更加高效地开发各种软件应用、设计算法和优化程序。 此外,C语言的应用也为学校的科研和项目开发提供了有力支持。在科学研究中,C语言的高效性可以帮助研究人员更好地处理大量的数据和进行复杂的计算。 最后,C语言的重要性还体现在与其他编程语言的关联上。许多现代编程语言都基于C语言的语法和特性进行扩展和发展,因此掌握C语言可以为学生们打下良好的编程基础,便于他们在将来学习其他语言。 总之,C语言在1100校庆中具有重要地位。它既是学生学习和开发的重要工具,也是科研和项目开发的得力支持。通过学习和应用C语言,可以更好地发挥计算机科学在学校发展中的重要作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向阳而生__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值